Javascript 更新数组时HTTP Put错误:未找到匹配的文档。没有方法“发送”

Javascript 更新数组时HTTP Put错误:未找到匹配的文档。没有方法“发送”,javascript,node.js,angularjs,express,mongoose,Javascript,Node.js,Angularjs,Express,Mongoose,在AngularJS和ExpressJS中,在数组中执行HTTP Put请求时,我似乎遇到了问题。问题是,当我第一次调用HTTP Put时,一切都正常工作。然而,当我尝试第二次打电话时,它不起作用。以下是我的尝试: 当我单击按钮时,我调用并执行以下HTTP Put请求: $scope.currentUser.eventsAttending.push(event.eventName); $http.put('/api/users/' + $scope.currentUser._id, $scope

在AngularJS和ExpressJS中,在数组中执行HTTP Put请求时,我似乎遇到了问题。问题是,当我第一次调用HTTP Put时,一切都正常工作。然而,当我尝试第二次打电话时,它不起作用。以下是我的尝试:

当我单击按钮时,我调用并执行以下HTTP Put请求:

$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);
  });
这是我在User.model.js中的用户模式/模型:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var User = require('./user.model');

var UserSchema = new Schema({
  name: String,
  ...
  eventsAttending: [{ type: String, ref: 'Event'}]
});
我在index.js中按如下方式路由HTTP Put请求:

router.put('/:id', controller.update);
下面是我在User.controller.js中实际使用的名为controller.update的HTTP Put函数:

// 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(err); }
    if(!user) { return res.send(404); }
    var updated = _.merge(user, req.body);
    updated.markModified('eventsAttending');
    updated.save(function (err) {
      if (err) { return handleError(err);}
      return res.json(200, user);
    });
  });
};
...
function handleError(res, err) {
  console.log("Error: ", err);
  return res.send(500, err);
}
在第二次尝试调用上面的HTTP Put函数exports.update时,我总是在Mongoose中看到一个错误,它说:

TypeError: Object VersionError: No matching document found. has no method 'send'
    at handleError (/Users/schan/test/go-v2/server/api/user/user.controller.js:131:14)
    at Promise.<anonymous> (/Users/schan/test/go-v2/server/api/user/user.controller.js:43:25)

错误基本上是在HTTP Put函数中调用ifer返回{handleerrorer;}的地方,当我打印出错误时,我得到了未定义的错误。老实说,我不确定如何调试它,或者我可能做错了什么。谁能给我指出正确的方向吗?如果是这样,那就太好了!谢谢。

您不能将res传递给handleError。更改HandleErrorer的实例;处理错误,错误

啊,好的,谢谢,我知道了。我一直收到一个错误,上面写着:error:{[VersionError:找不到匹配的文档。]消息:“找不到匹配的文档”。,名称:“VersionError”},你知道为什么吗?