Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose错误:`{quot;message";:“未找到匹配的文档。”,“name";:“VersionError”}`_Javascript_Node.js_Angularjs_Mongoose_Mean Stack - Fatal编程技术网

Javascript Mongoose错误:`{quot;message";:“未找到匹配的文档。”,“name";:“VersionError”}`

Javascript Mongoose错误:`{quot;message";:“未找到匹配的文档。”,“name";:“VersionError”}`,javascript,node.js,angularjs,mongoose,mean-stack,Javascript,Node.js,Angularjs,Mongoose,Mean Stack,我一直在试图弄明白为什么我的HTTP Put在我使用过一次之后就不能工作了。当我单击一个按钮时,我会将当前用户的id按入如下数组: $scope.currentUser = { 'eventsAttending' = []; } $scope.attending = function(event, id){ if($cookieStore.get('token')){ $scope.currentUser = Auth.getCurrentUser(); } $sco

我一直在试图弄明白为什么我的HTTP Put在我使用过一次之后就不能工作了。当我单击一个按钮时,我会将当前用户的id按入如下数组:

$scope.currentUser = {
  'eventsAttending' = [];
}

$scope.attending = function(event, id){

  if($cookieStore.get('token')){
    $scope.currentUser = Auth.getCurrentUser();
  }
  $scope.currentUser.eventsAttending.push(event._id);
  $http.put('/api/users/' + $scope.currentUser._id, $scope.currentUser)
    .success(function(data){
      console.log("Success. User " + $scope.currentUser.name);
    });
}
我的HTTP Put函数如下所示:

var express = require('express');
var controller = require('./user.controller');
var config = require('../../config/environment');
var auth = require('../../auth/auth.service');
router.get('/:id', controller.getEvents);

var router = express.Router();

exports.update = function(req, res) {
  if(req.body._id) { delete req.body._id; }
  User.findById(req.params.id, function (err, user) {
    if (err) { return res.send(500, err); }
    if(!user) { return res.send(404); }
    var updated = _.merge(user, req.body);
    updated.markModified('eventsAttending');
    updated.save(function (err) {
      if (err) { return res.send(500, err); }
      return res.json(200, user);
    });
  });
};
在我的HTML页面中,我有多个可以参加的活动,每个活动都有一个名为
attend
的按钮,我在其中调用
$scope.atting
,调用函数并执行HTTP Put。所有这些都适用于我选择参加的第一个活动。但是,当我单击另一个事件的
参加
按钮时,我会收到一个错误,显示:

Undefined type at `versionKey` 
Did you try nesting Schemas? You can only nest using refs or arrays.
{“消息”:“未找到匹配的文档”。“名称”:“VersionError”}

我不知道为什么。当我尝试在mongoose调用中执行
updated.save()
,并且我得到
res.send(500,err)

当我在谷歌上搜索时,我试图寻找解决问题的方法,但我不断得到一个错误,上面写着:

Undefined type at `versionKey` 
Did you try nesting Schemas? You can only nest using refs or arrays.
在添加到我的模式中时:

var UserSchema=新模式({ versionKey:“myVersionKey”,


我还尝试将
.save()
函数更改为
.update()
,正如有人在网上建议的那样,但这似乎给了我更多的错误。有什么办法可以解决这个问题吗?非常感谢!

请查看您的语法:

$scope.currentUser = {
    'eventsAttending' = [];
}

我很确定,这样的JSON结构内部的赋值可能会导致错误,特别是当您试图将该结构引入MongoDB时。

我认为您可能遇到了问题(就像我从类似操作中收到此错误时的情况一样)第一次更新后,新更新文档上的“\u v”VersionKey属性已更改,但您可能没有更新浏览器中对象的该属性。因此,当您再次更新它时,您将发送旧的“\u v”VersionKey(即使您更新了“eventsAttending”属性)并且该文档与较新版本的密钥冲突。这将假定
Auth.getCurrentUser();
函数从mongo返回整个文档对象


为了解决这个问题,我只需添加
删除实体。
在发送请求之前从文档中删除旧版本密钥。更好的是,我建议在返回文档时更新API发回的属性,这样就不会出现这个问题。

您是否知道解决方法?我的EventsTending模式如下:
EventsTending:[{type:schema.ObjectId,ref:'Event'}],…