首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用新对象更新我的数据库文档?

如何使用新对象更新我的数据库文档?
EN

Stack Overflow用户
提问于 2018-05-30 09:52:40
回答 2查看 25关注 0票数 0

我尝试通过添加firstNamelastName来更新我的DB文档,但是当我使用我的函数时,它实际上会覆盖所有内容。举个例子,我的对象现在看起来像这样

代码语言:javascript
复制
{
    "_id" : ObjectId("5b0df225287cc77612ed89a5"),
    "email" : "user@user.com",
    "password" : "$2HbyP4.ts9O/zrjV5Pcd/Z28bhOb8oGas9wEG",
    "userData" : [ 
        {
            "role" : "user",
            "phone" : 747483245,
            "_id" : ObjectId("5b0df225287cc77612ed89a6"),
            "address" : [ 
                {
                    "_id" : ObjectId("5b0df225287cc77612ed89a7")
                }
            ]
        }
    ],
    "__v" : 0
}

但是当我更新它时,它看起来是这样的

代码语言:javascript
复制
{
    "_id" : ObjectId("5b0df225287cc77612ed89a5"),
    "email" : "user@user.com",
    "password" : "$2HbyP4.ts9O/zrjV5Pcd/Z28bhOb8oGas9wEG",
    "userData" : [ 
        {
            "firstName" : "First Name",
            "lastName" : "Last Name",
            "_id" : ObjectId("5b0df225287cc77612ed89a6"),
            "address" : [ 
                {
                    "_id" : ObjectId("5b0df225287cc77612ed89a7")
                }
            ]
        }
    ],
    "__v" : 0
}

所以我不再有rolephone,这是我的函数

代码语言:javascript
复制
// Update user data
exports.update = function (req, res, next) {
  User.findByIdAndUpdate(req.user._id, req.body)
    .exec()
    .then(doc => res.json(doc))
    .catch(err => res.json(err))
}
EN

回答 2

Stack Overflow用户

发布于 2018-05-30 10:27:16

尝试这样做:

代码语言:javascript
复制
exports.update = function (req, res) {
  User.findByIdAndUpdate(req.user._id, { $set: { firstName: req.body.firstName , lastName:req.body.lastName }}, {upsert:true},function(err,user){
        if(err){
            res.json(err);
        }else{
            res.json(user);
       }
   }
}
票数 1
EN

Stack Overflow用户

发布于 2018-05-30 17:45:49

试试这个

代码语言:javascript
复制
exports.update = (req, res) => {

  const query = {_id: req.user._id},
    update = { $set: {
       "userData.$.firstName": req.body.firstName, 
       "userData.$.lastName": req.body.lastName }
    },
    options = { upsert:true };

  User.findByIdAndUpdate(query, update, options)
    .exec()
    .then(user => res.json(user))
    .catch(err => res.json(err));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50595295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档