当我将新用户保存到我的应用程序的数据库时,我需要将用户对象返回给客户端,但是我想要排除用户对象中的某些字段,因此客户端不会收到他们。
目前我正在保存文档,然后再次在集合中查找该文档,不包括某些字段,然后发送该文档。
是否可以排除.save上的字段,将另一个行程保存回数据库?
...
function hashing(err, hash) {
if (err) {
return next(err);
}
newUser.password = hash;
newUser.save(saveUser);
}
function saveUser(err, user) {
if (err) {
return next(err);
}
User.findOne({ username: user.username },
'-purchased -following -songs')
.exec(findAndSendUser);
}
function findAndSendUser(err, user) {
if (err) {
return next(err);
}
res.send({
success: true,
user: user
});
}
答案 0 :(得分:0)
为什么不使用underscore来省略用户的某些字段
_ = require('underscore');
...
function saveUser(err, user) {
if (err) {
return next(err);
}
findAndSendUser(err, _.omit(user.toJSON(), 'purchased', 'following', 'songs'));
}
答案 1 :(得分:0)
使用以下内容:
let user = await UserModel.create({
email: "example@example.com",
password: "example"
});
user = user.toObject();
delete user.password;
console.log(user);
输出
{
"_id": "5dd3fb12b40da214026e0658",
"email": "example@example.com"
}