【发布时间】:2014-10-10 20:48:12
【问题描述】:
我想将一个值附加到我的 Mongoose 数组中,但我的数组似乎永远不会更新。我执行以下操作:
在我的控制器中,我将 eventName 附加到数组 eventsAttending 中,如下所示:
$scope.currentUser.eventsAttending.push(event.eventName);
$http.put('/api/users/' + $scope.currentUser._id, $scope.currentUser)
.success(function(data){
console.log("Success. User " + $scope.currentUser.name);
});
我尝试像这样更新数组:
// Updates an existing event in the DB.
exports.update = function(req, res) {
if(req.body._id) { delete req.body._id; }
User.findById(req.params.id, function (err, user) {
if (err) { return handleError(res, err); }
if(!user) { return res.send(404); }
user.markModified('req.body.eventsAttending');
user.save(function (err) {
if (err) { return handleError(res, err);}
return res.json(200, user);
});
});
};
但我的数组似乎永远不会更新。我还尝试了以下方法:
// Updates an existing event in the DB.
exports.update = function(req, res) {
if(req.body._id) { delete req.body._id; }
User.findById(req.params.id, function (err, user) {
if (err) { return handleError(res, err); }
if(!user) { return res.send(404); }
var updated = _.merge(user, req.body);
updated.markModified('eventsAttending');
updated.save(function (err) {
if (err) { return handleError(res, err);}
return res.json(200, user);
});
});
};
使用这种方法,我的数组可以正确更新,但是当我尝试在一次之后执行 http put 时,我收到一条错误消息 Error: { [VersionError: No matching document found.] message: 'No matching document found.', name: 'VersionError' }
这是我的用户架构:
var UserSchema = new Schema({
name: String,
username: String,
eventsAttending: [{ type: String, ref: 'Event'}],
});
如果有人可以提供帮助,将不胜感激。
【问题讨论】:
标签: javascript arrays node.js angularjs mongoose