我的简单问题是:
我在服务器端有一个猫鼬对象:
...
item = {
name: "Test",
id: 1
}
// item是一个mongo架构
// ID和名称已在模型String
和Number
然后我添加到item
新字段mentions
:
item.mention = [{ id: 1, ... }]
但我无法在客户端获得mention
。
我的回复代码:
res,json({ status: 1, message: 'success', data: item })
回复是data: { name: "Test", id: 1 }
我不想将mention
添加到我的mongo架构中。
那么,我的问题是什么?
我该如何解决?
谢谢!
答案 0 :(得分:2)
问题是item
是MongooseDocument,而不是普通的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)
})