无法使用HTTP Put更新MongoDB集合中的对象?

我是AngularJS的新手,我试图更新我的MongoDB数据库。 我正在尝试更新我的集合中的对象时遇到问题。 以下是我试图这样做的尝试:

//listviewFactory is already injected and returns an event object //I call $scope.put when clicking (ng-click) on a button $scope.event = listviewFactory.getEvent(); $scope.put = function(event){ var currentUser = {}; if($cookieStore.get('token')) { currentUser = User.get(); } event.attendees.push(currentUser); $http.post('/api/events/' + event._id, event).success(function(data){ for(var i = 0; i < event.attendees.length; i++){ console.log("Attendees: ", event.attendees[i]); } $location.path('/'); }); }; 

我只是不确定为什么我的代码不工作。 当我执行$http put请求时,我的函数成功并继续执行console.log 。 当我打印出attendees数组时,我看到currentUser对象确实被追加到我的event.attendees数组中。 但是,当我使用Mongo Shell检查数据库时,我的与会者数组未更新并保持空白。 任何想法为什么或在哪里我可能是错的? 下面是我的服务器端代码,用于如何路由我的应用程序并指定如何在MongoDB中存储信息。

 module.exports = function(app) { app.use('/api/events', require('./api/event')); ... } module.exports = mongoose.model('Event', EventSchema); var express = require('express'); var controller = require('./event.controller'); var router = express.Router(); router.get('/', controller.index); router.put('/:id', controller.update); // Updates an existing event in the DB. exports.update = function(req, res) { if(req.body._id) { delete req.body._id; } Event.findById(req.params.id, function (err, event) { if (err) { return handleError(err); } if(!event) { return res.send(404); } var updated = _.merge(event, req.body); updated.save(function (err) { if (err) { return handleError(err); } return res.json(200, event); }); }); }; 

编辑:当我console.log currentUser:

 Current User: Resource {$promise: Object, $resolved: false, $get: function, $save: function, $query: function…} $promise: Object $resolved: true __v: 0 _id: "53dd72fb5a24aa781a3cbde8" email: "test@test.com" name: "Test User" provider: "local" role: "user" 

编辑:mongoose架构:

 'use strict'; var mongoose = require('mongoose'), Schema = mongoose.Schema; var EventSchema = new Schema({ startDate: Date, endDate: Date, eventLocation: String, eventName: String, attendees: Array }); 

我假设你正在使用mongoose 。 尝试

 updated.markModified('attendees'); 

updated.save调用之前。

关于推动当前的用户,做一些相当于

 event.attendees.push({__v: 0 _id: "53dd72fb5a24aa781a3cbde8" email: "test@test.com" name: "Test User" provider: "local" role: "user"}) 

即只是推动相关的领域。