mongoose从对象中删除属性

时间:2017-05-23 07:24:37

标签: javascript json mongoose

在将对象属性发送到前端之前寻找删除对象属性的方法 有什么理由可以解决这个问题:

var obj = {
    name: 'cris',
    age: 22,
}
console.log(obj) //output name, age
delete obj.name
console.log(obj) //output age

这不是:

User.findOne({ username: req.query.username }, function (err, user) {
    if (user != null) {
        console.log(user) //output all props
        delete user.salt || delete user['salt']
        console.log(user) //output all props
    } 
});

4 个答案:

答案 0 :(得分:3)

user是一个Mongoose文档,而不是常规对象。

您可以使用toObject()将其转换为一个:

user = user.toObject();

答案 1 :(得分:1)

Mongoose正在返回一个模型实例,而不是您正在寻找的普通JS对象。您正在查找的数据可以使用user.toObject()

进行访问

答案 2 :(得分:1)

db.collection.findOne()方法返回游标。你需要使用toObject()转换为对象。使用user.toObject()然后删除并将其发送到客户端。

答案 3 :(得分:1)

要使用delete,您需要通过调用toObject:

将模型文档转换为纯JavaScript对象
SELECT TOP (1) 
    [ID], [Lat], [Lng],
    geography::Point(32, 34, 4326).STDistance(geography::Point([Lat], [Lng], 4326)) as Dist
FROM 
    [Area]
ORDER BY 
    Dist

你也可以修改使用这个

User.findOne({ username: req.query.username }, function (err, user) {
    if (user != null) {
        console.log(user) //output all props
        user = user.toObject();
        delete user.salt || delete user['salt']
        console.log(user) //remove salt prop
    } 
});