繁体   English   中英

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

[英]HTTP Put error when updating array: No matching document found. has no method 'send'

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

单击按钮时,我调用执行以下HTTP Put Request:

$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 Request:

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)

该错误基本上是我调用if(err) return { handleError(err); } if(err) return { handleError(err); }在HTTP PUT功能,当我打印出来的错误,我得到错误不确定的。 老实说,我不确定如何调试它或我做错了什么。 谁能指出我正确的方向? 如果是这样,那就太好了! 谢谢。

您没有将res传递给handleError() 更改handleError(err);实例handleError(err); 处理handleError(res, err);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM