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

Update data in MongoDB with Mongojs using findAndModify()

这里又是一个新手问题。这从数据库中获取数据并将其显示在一些文本字段中(该部分未显示在下面的代码中)并且在用户编辑它之后应该通过 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. 在调用 findAndModify 之前,只需使用您的查询进行简单的查找。确保您可以使用查询实际找到该对象。如果可行,您知道 findAndModify 的 'find' 部分可能没问题。

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

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

更新:

使用本机的示例:

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