使用DocumentID更新整个MongoDB文档

时间:2017-10-05 07:06:20

标签: node.js mongodb

我尝试在MEAN中进行CRUD操作。我正在尝试使用documentid更新整个文档。我不知道该怎么做。以下是我的代码:

Users.prototype.updateUser = function (req, cbk) {
    var self = this;
    var reqObj = req.body;
    var response = {
        status: false,
        err: null,
        data: null
    };
    console.log(new Date() + " | user update ", reqObj)
    self.db.collection('users').update({_id:ObjectId(reqObj._id)}, {upsert:true}, function (err, result) {
        if (!err && result.length > 0) {
            response['status'] = true;
            response['data'] = result;
            cbk(response)
        } else {
            response['err'] = 'No user found!';
            cbk(response)
        }
    });
};

我要发送的JSON请求是:

{
    "_id": "59d5db3c4c46e83a14b94617",
    "name": "hello",
    "ind": "0"
}

我总是收到用户未找到的回复。我有什么想法吗?

编辑:

以下是用户列表的JSON响应:

{
    "status": true,
    "err": null,
    "data": [
        {
            "_id": "59d5db344c46e83a14b94616",
            "name": "test"
        },
        {
            "_id": "59d5db3c4c46e83a14b94617",
            "name": "hello"
        }
    ]
}

1 个答案:

答案 0 :(得分:1)

从文档中您缺少更新对象。

  

collection.update(criteria, update[[, options], callback]);

self.db.collection('users')
  .update( { _id: ObjectId(reqObj._id) }, reqObj, { upsert: true },
  function (err, result) {
     if (err) { response['err'] = err.message; }
     else {
       response['status'] = true;
       response['data'] = result;
     }
     cbk(response);
  },
);

如果您没有该对象,它将创建一个新文档。