这里还有另一个先到先得的问题。这将从数据库中获取数据并将其显示在某些文本字段中(该部分未在下面的代码中显示),在用户编辑后,数据应通过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();
})
};
答案 0 :(得分:3)
如果这是我,我会先做几件事:
在调用findAndModify之前,只需使用您的查询进行简单查找即可。确保您可以使用查询实际找到对象。如果有效,你知道findAndModify的'find'部分可能没问题。
在findAndModify调用的回调处理程序中执行一些控制台日志记录。如果从findAndModify调用返回错误,您不会执行任何操作。您的电话可能会返回一个您只是忽略的错误,它可能会为您的问题提供一些额外的见解。
我会首先尝试这两个,看看它是否有帮助。
更新
使用native的示例:
collection.findAndModify(
{ field: 'some value' },
[],
{ $set: { field2: 'some new value' } },
{ new:true },
function(err, doc) {
//handle err and doc
});