【问题标题】:Update data in MongoDB with Mongojs using findAndModify()使用 findAndModify() 使用 Mongojs 更新 MongoDB 中的数据
【发布时间】:2016-02-10 04:34:29
【问题描述】:

这里还有一个新手问题。这从数据库中获取数据并将其显示在一些文本字段中(该部分未显示在下面的代码中),并且在用户编辑它之后,数据应该通过 findAndModify() 方法在数据库中更新,我认为这是问题在于。没有错误,它只是不做任何事情。 EDIT 收到以下错误:MongoError: 必须指定 update 或 remove=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();
    })
};

【问题讨论】:

    标签: node.js mongodb mongojs


    【解决方案1】:

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

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

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

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

    更新:

    使用原生的示例:

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

    【讨论】:

    • 太好了,谢谢。更改回调处理程序后出现以下错误,“MongoError:必须指定更新或删除=真”。他们不是已经在我上面发布的代码中指定了吗?
    • 这里的“MongoClient”是什么?我的猜测是你可能需要使用本机驱动程序语法,如果这是你有句柄的话。
    • 是的,我不确定这是 Compose.io 提供的 Mongo URI 连接字符串
    • 不,我的意思是这里的字面意思是“MongoClient”。必须有更高的要求才能创建它。我正在尝试查看您使用的是什么特定的 mongo 驱动程序。
    • 明白了,这是 mongodb。我想我看到了问题。
    猜你喜欢
    • 2016-02-10
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    相关资源
    最近更新 更多