使用findAndModify()使用Mongojs更新MongoDB中的数据

时间:2016-02-10 04:34:30

标签: node.js mongodb mongojs

这里还有另一个先到先得的问题。这将从数据库中获取数据并将其显示在某些文本字段中(该部分未在下面的代码中显示),在用户编辑后,数据应通过findAndModify()方法在数据库中更新,我认为这是问题在于。没有错误,它只是没有做任何事情。 编辑收到以下错误: MongoError:必须指定更新或删除= true

server.js

MongoClient.connect("mongodb://user:secretPassword@aws-us-east-1-portal.7.dblayer.com:10712,aws-us-east-1-portal.10.dblayer.com:10316/database", function(err, db) {
    if (err) throw err;
    var contactList = db.collection("contactList");

app.put('/contactList/:id', function(req, res) {
    var id = req.params.id;
    console.log("edited: " + req.body.name); //works up until here
    contactList.findAndModify({
        query: {_id: mongojs.ObjectId(id)},
        update: {$set: {name: req.body.name, email: req.body.email, number: req.body.number}},
        new: true
    }, function (err, doc) {
        res.json(doc);
    })
});

controller.js

$scope.update = function() {
    $http.put('/contactList/' + $scope.contact._id, $scope.contact).success(function(response) {
        refresh();
    })
};

1 个答案:

答案 0 :(得分:3)

如果这是我,我会先做几件事:

  1. 在调用findAndModify之前,只需使用您的查询进行简单查找即可。确保您可以使用查询实际找到对象。如果有效,你知道findAndModify的'find'部分可能没问题。

  2. 在findAndModify调用的回调处理程序中执行一些控制台日志记录。如果从findAndModify调用返回错误,您不会执行任何操作。您的电话可能会返回一个您只是忽略的错误,它可能会为您的问题提供一些额外的见解。

  3. 我会首先尝试这两个,看看它是否有帮助。

    更新

    使用native的示例:

    collection.findAndModify(
         { field: 'some value' }, 
         [], 
         { $set: { field2: 'some new value' } }, 
         { new:true }, 
         function(err, doc) {
            //handle err and doc
         });