Mongoose - 从.save上的返回对象中排除字段

时间:2014-09-09 03:43:46

标签: node.js mongodb mongoose

当我将新用户保存到我的应用程序的数据库时,我需要将用户对象返回给客户端,但是我想要排除用户对象中的某些字段,因此客户端不会收到他们。

目前我正在保存文档,然后再次在集合中查找该文档,不包括某些字段,然后发送该文档。

是否可以排除.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
    });
}

2 个答案:

答案 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"
}