用mongoose更新,不返回任何错误,但不更新

我想用mongoose学习CRUD。 我只是缺less更新的一部分。 我究竟做错了什么?

我的模型

var mongoose = require('mongoose'); var testSchema = new mongoose.Schema({ name: String, number: Number }); mongoose.model('TestData', testSchema); 

我的路线

 // get the models var Test = mongoose.model('TestData'); 

PARAM
如果链接具有'test'作为url参数,则会查看数据库中是否存在该对象,否则返回错误。

 router.param('test', function(req, res, next, id){ var query = Test.findById(id); query.exec(function(err, test){ if(err){ return next(err); } if(!test){ return next(new Error('can\'t find test')); } req.test = test; return next(); }); }); 

GET BY ID

  /* GET testdata/:id */ router.get('/testingdata/:test', function(req, res, next){ req.test.populate('test', function(err, test){ res.json(test); }); }); 

删除

 /* DELETE testdata/:id */ router.delete('/testingdata/:test', function(req, res, next){ req.test.remove('test', function(err, test){ console.log('removed'); res.json(test); }); }); 

我的问题
现在这里出现我的问题,如果我尝试更新一个,我只是想念一些东西。

 /* PUT testdata/:id */ router.put('/testingdata/:test', function(req, res, next){ req.test.update('test',{$set: {name: 'new data'}} , function(err, test){ res.json(test); }); }); 

我没有得到任何错误,但它没有更新任何东西。 它甚至还有一些数据。

 { "ok": 0, "n": 0, "nModified": 0 } 

尝试没有不必要的第一个参数( test ),因为req.testTest模型的一个实例。

 req.test.update({name: 'new data'} , function(err, test){ res.json(test); // test would be `1` if success }); 

update方法不会返回对象,如果你想返回对象,那么使用save

 req.test.name = 'new data'; req.test.save(function(err, test){ res.json(test); }); 

你的问题是,删除和更新方法,不工作模型实例,但需要查询,如

 {_id:id} 

你更新语句不匹配任何东西,我敢打赌,你的删除端点也不会工作。

如果你想在req.test上的实时模型实例上运行,那么直接设置testing的值并保存模型:

 req.test.name= 'new data'; req.test.save(... 

删除模型总是需要一个新的查询,因为你不能直接删除一个实例。