javascript - 即使原始模型中未指定新值,如何将新值添加到现有 MongoDB 数据库中
问题描述
我有一个相当普通的数据库来存储你的平均数据,比如电子邮件和用户名。
我正在使用 Node.JS 和 Mongoose/MongoDB 创建这个数据库/后端。我想让它成为未来的证明。目前,我有一个用户模型,其中包含我认为我只需要的值,但是,我知道我必须稍后将值添加到用户的数据库中(模型中未指定) .
显然,由于已经使用模型创建了用户,我不想弄乱他们的数据。当他们发出请求时,我使用该模型通过他们的 ID 搜索用户,但是我只想在 JSON 文档中添加一个值和一些数据。要添加的数据可以在他们的 JSON 数据的根目录中,或者在他们的 JSON 文档中的嵌套值中,所以我想知道如何做到这两点。
根据我的模型,我的数据结构如下:
user:
{
username: "",
email: "",
isVerified: "",
password: "",
hub: {
isSetup: true,
swVersion: 0.0`
}
}
更新现有数据的代码(在下面的示例中,我将嵌套的 JSON - 'hub' 值 'isSetup' 更新为 true:
User.update({_id: req.user.id}, {$set: { "hub.isSetup" : true}})
.then((data) => {
return res.json({message: data});
})
.catch(err => {
// log.error(err);
return next({message: 'Error updating User.'});
});
我如何将数据(如上)添加到数据库的现有文档中,而不锁定用于搜索用户的模型,该模型是“用户”.....已使用:User.update(...)
正如我所发现的,在这两个我的测试和搜索谷歌,我只能将数据添加到数据库中,只要模型指定它 - 我不想这样做。
谢谢
解决方案
您正在寻找的是严格模式选项。https://mongoosejs.com/docs/guide.html#strict
如果将其指定为 false,则可以添加任何您喜欢的内容。
推荐阅读
- php - 图表不加载:带有 PHP 的 jQuery HighchartTable 插件将表格数据转换为图表
- angular - 从来自后端响应的对象设置表单状态
- sql - SQL Server 全文搜索返回意外结果
- kotlin - 如何暂停 kotlin 协程直到收到通知
- java - 如何使用 Java 从具有多个命名空间的 XML 中获取特定节点?
- c++ - 如何在使用 C++ 打开隐藏的 COM 对象时隐藏控制台窗口?
- r - 使用 Riverdist 时如何修复“trimriver 中的错误 - 没有剩余的线段”?
- xslt-1.0 - XSLT 1.0 在一个或多个级别上分组
- methods - 如何在类图上将函数参数表示为对象的二维数组?
- excel - 通过从用户输入(TKinter 中的输入标签)中获取名称来查找熊猫工作表位置