如何在Javascript中删除继承的对象值?
我从Nodejs中的数据库(使用Mongoose的Mongodb)获取用户结果。 现在我想删除用户结果中的一些键。但无法删除其属性。 我搜索了很多次,但没有找到任何要删除的解决方案 例如:- File1.js 通过mongo查询获取的用户如何在Javascript中删除继承的对象值?,javascript,node.js,object,delete-operator,inherited,Javascript,Node.js,Object,Delete Operator,Inherited,我从Nodejs中的数据库(使用Mongoose的Mongodb)获取用户结果。 现在我想删除用户结果中的一些键。但无法删除其属性。 我搜索了很多次,但没有找到任何要删除的解决方案 例如:- File1.js 通过mongo查询获取的用户 userModel.findOne(query, projection) .then(function (result) { if (result) return result;
userModel.findOne(query, projection)
.then(function (result) {
if (result)
return result;
return false
})
上面的查询从数据库中获取结果,结果如下
user = {
f_name: "Vikas",
l_name: "Kohli",
key1: "abcD",
key2: "dhdhdh"
}
File2.js
user = {
f_name: "Vikas",
l_name: "Kohli",
key1: "abcD",
key2: "dhdhdh"
}
inputuser = "dfdfhdfgy"
使用用户结果的key1创建userkey,然后比较
(_.isEqual(userkey, user.key2)){
//call to next file
}else{
//send response as key not matched
}
执行一些逻辑,获取用户的密钥,然后使用key2执行一些加密方法
最后将key2与userresultkey2(我从db中获取的)进行比较
如果ok,则传递到下一个函数
File3.js
预期产出:-
user = {
f_name: "Vikas",
l_name: "Kohli"
}
当前情景:-
user = {
f_name: "Vikas",
l_name: "Kohli",
key1: "abcD"
key2: "dhdhdh"
}
现在希望发送带有已删除的key1和key2的用户结果的响应,但无法删除该密钥
delete关键字不会删除继承的属性,但如果删除原型属性,它将影响从原型继承的所有对象。(来自w3schools,developer.mozilla)
还发现了一些有用的链接,但没有一个适合我。我怎样才能做到这一点
用户对象中存在逗号语法错误,请更正并应用删除运算符
user = {
f_name: "Vikas",
l_name: "Kohli",
key1: "abcD",
key2: "dhdhdh"
}
delete user.key1
delete user.key2
可以从现有对象创建新对象,只需获取所需的属性:
让用户={
f_名称:“维卡斯”,
l_名称:“科利”,
键1:“abcD”,
键2:“dhdhdh”
}
用户=({f_name,l_name})=>({f_name,l_name}))(用户);
console.log(用户)
delete
在mongoose返回的模型上不起作用,但可以在转换为object后删除
user = user.toObject();
delete user.key1;
delete user.key2;
对于简单的东西来说,文章太长了。
delete key
不起作用吗?一点也不起作用。即使它显示为true但无法删除该键,因为此对象是继承的。您可以删除/覆盖具有相同名称但不是继承属性的对象的自身属性,除非您希望将其从原型本身中删除。通常的解决方法是在引用属性时进行hasOwnProperty
检查。或者,你可以制作一个对象的深度副本,只包含你需要的属性。应该有一些代码来解释这些对象是如何产生的,以及delete
是如何不起作用的。问题没有解释这一点,也没有显示继承。没有语法错误。由于错误,我在这里写了一个语法错误。现在我换了这个回答你的问题?你能留下一些反馈吗?如果有100个属性,那么写100个我想发送的属性是不好的。那么你有多少个属性?您需要删除多少属性?无论如何,我添加了一个备选方案,您需要指定要忽略的键列表,而不是要保留的键列表。