首页 > 解决方案 > 即使原始模型中未指定新值,如何将新值添加到现有 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(...)正如我所发现的,在这两个我的测试和搜索谷歌,我只能将数据添加到数据库中,只要模型指定它 - 我不想这样做。

谢谢

标签: javascriptnode.jsdatabasemongodbmongoose

解决方案


您正在寻找的是严格模式选项。https://mongoosejs.com/docs/guide.html#strict

如果将其指定为 false,则可以添加任何您喜欢的内容。


推荐阅读