【发布时间】:2018-11-27 00:21:22
【问题描述】:
我在 Nodejs 中从数据库(使用 Mongoose 的 Mongodb)获取用户结果。 现在我想删除用户结果中的一些键。但无法删除其属性。 找了好多次都没找到删除的办法
例子:-
文件1.js 通过 mongo 查询获取用户
userModel.findOne(query, projection)
.then(function (result) {
if (result)
return result;
return false
})
上述查询从数据库中获取结果,结果如下所示
user = {
f_name: "Vikas",
l_name: "Kohli",
key1: "abcD",
key2: "dhdhdh"
}
文件2.js
user = {
f_name: "Vikas",
l_name: "Kohli",
key1: "abcD",
key2: "dhdhdh"
}
inputuser = "dfdfhdfgy"
使用用户结果的key1创建用户密钥然后比较
(_.isEqual(userkey, user.key2)){
//call to next file
}else{
//send response as key not matched
}
做一些逻辑,获取用户的密钥,然后使用 key2 做一些加密方法
最后将 key2 与 userResullt key 2(我从数据库中获取)进行比较 如果没问题,则传递到下一个函数
文件3.js 预期输出:-
user = {
f_name: "Vikas",
l_name: "Kohli"
}
当前情景:-
user = {
f_name: "Vikas",
l_name: "Kohli",
key1: "abcD"
key2: "dhdhdh"
}
现在想要发送带有已删除键 1 和键 2 的用户结果的响应,但无法删除该键
delete 关键字不会删除继承的属性,但是如果你删除一个原型属性,它会影响从原型继承的所有对象。 (来自 w3schools,developer.mozilla)
还找到了一些有用的链接,但没有一个对我有用。我怎样才能做到这一点?
Clarification on the inability of javascript deleting inherited properties.
Why delete operator returns true even if property wasn't deleted from an object
【问题讨论】:
-
对于一些简单的东西来说太长了。
delete key不工作吗? -
一点也不。即使它显示为 true 但无法删除该键,因为该对象是继承的
-
您可以删除/覆盖具有相同名称的对象的自身属性,但不能删除继承的属性,除非您想从原型本身中删除它们。通常的解决方法是在引用属性时检查
hasOwnProperty。或者,您可以制作对象的深层副本,并仅包含您需要的属性。 -
问题缺少stackoverflow.com/help/mcve。应该有一些代码来解释这些对象是如何产生的,以及
delete是如何产生的。问题没有解释这一点,也没有显示继承。
标签: javascript node.js object delete-operator inherited