在客户端Nodejs缺少属性

时间:2018-03-30 13:47:18

标签: node.js object mongoose server

我的简单问题是:

我在服务器端有一个猫鼬对象:

... item = { name: "Test", id: 1 }

// item是一个mongo架构

// ID和名称已在模型StringNumber

中定义

然后我添加到item新字段mentions

item.mention = [{ id: 1, ... }]

但我无法在客户端获得mention

我的回复代码:

res,json({ status: 1, message: 'success', data: item })

回复是data: { name: "Test", id: 1 }

我不想将mention添加到我的mongo架构中。

那么,我的问题是什么?

我该如何解决?

谢谢!

2 个答案:

答案 0 :(得分:2)

问题是itemMongooseDocument,而不是普通的javascript对象。

有多种方法可以达到你想要的效果。

1)使用.lean()

  

启用精益选项的查询返回的文档是明确的   javascript对象,而不是MongooseDocuments

Model.findOne().lean().exec((err, item) => {
    item.mention = [{ id: 1 }];
    res.json(item);
});

此选项会提高效果,因为您忽略了创建Mongoose文档的开销

2)使用:.set()

item.set('mention', [{ id: 1}], { strict: false });

4)使用spread operator

res.json({
    status: 1,
    message: 'success',
    data: { mention: [{ id: 5 }], ...item }
})

4)使用Object.assign作为@Alexis Facques解释。

答案 1 :(得分:1)

利用Object.assign()也可以解决您的问题。

res.json({
    status: 1,
    message: 'success',
    data: Object.assign({ mention: [{id: 1...}] },item)
})