如何从 mongodb 获取的对象中删除键? [复制]
Posted
技术标签:
【中文标题】如何从 mongodb 获取的对象中删除键? [复制]【英文标题】:how to delete a key from fetched object from mongodb? [duplicate] 【发布时间】:2018-04-16 23:43:15 【问题描述】:我知道有人问过see this,但答案是直接修改数据库,但在这种情况下,我想从用户对象中删除密码,这样密码就不会发送到前端,但delete
是尽管user
是一个对象,但无法正常工作。
User.find().then(function(users)
let counter = 1;
users.forEach(function(user)
delete user.password;
console.log("after delete",user) // password key/value exist
userMap[counter] = user;
counter++;
);
return userMap;
);
任何想法!我正在使用猫鼬
【问题讨论】:
应该可以的。你确定用户有一个完全命名为“密码”的字段。你也可以显示你的 console.log 输出吗? 【参考方案1】:您正在尝试在 Mongoose 包装器对象上使用 delete
关键字。 delete
关键字将与本机 javascript 对象一起使用。为此,您需要使用 Mongoose 提供的lean()
函数。
试试这个 -
User.find().lean().then
我刚刚在 find 查询之后添加了 lean()
函数。现在可以使用delete
关键字修改您的对象。
【讨论】:
【参考方案2】:为什么不从查询本身中排除密码? find 的第二个参数让您在结果中包含/排除键。
User.find(, "password": 0 ).then(function(users)
// The users should not contain the password key here
);
我认为这可以从Mongoose v4.0.0
获得。同样,你也可以在 find 之后使用 select 操作符。
User.find().select( "name": 1 ).then(function(users)
// Do something
);
这个查询只会选择用户的名字。
【讨论】:
以上是关于如何从 mongodb 获取的对象中删除键? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何通过使用位置 url 从 Node mongo 中删除 s3 对象?
如何从 MongoDB 集合中获取具有匹配键的最后 N 个元素
如何从 MongoDB 集合中获取具有匹配键的最后 N 个元素