node.js - Nodejs 客户端缺少属性

标签 node.js object mongoose server

我的简单问题是:

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

... 项目={ 名称:“测试”, 编号:1 }

//项目是 mongo 模式

//id 和 name 在模型中定义 StringNumber

然后我添加到item新字段mentions:

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

但我无法在客户端提及

我的响应代码:

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

响应为data: { name: "Test", id: 1 }

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

那么,我的问题是什么?

我该如何解决这个问题?

谢谢!

最佳答案

问题是 itemMongooseDocument ,不是一个普通的 JavaScript 对象。

有多种方法可以实现您想要的目标。

1) 使用 .lean()

Documents returned from queries with the lean option enabled are plain javascript objects, not 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 所解释的。

关于node.js - Nodejs 客户端缺少属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49575678/

相关文章:

java - 当您在 Java 中调用 new 时,它会创建构造函数或类的副本吗?

node.js - find() 的 Mongoose 默认过滤器/查询参数

javascript - Electron 菜单中是否可以有子菜单的子菜单?

node.js - 定义我负责模块的哪些部分以及用户应该注意哪些部分

javascript - 给定多个对象键获取数组对象元素的索引

node.js - MongoDB地理空间索引,如何将其与数组元素一起使用?

node.js - 使用 NodeJS 和 Mongoose 查询嵌入式文档

node.js - 在 Express 中处理文本/纯文本(通过连接)?

node.js - NodeJS Sequelize : Association with alias [alias] does not exist on [model]

c++ - 在对象数组的每个索引上调用不同的构造函数