用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.test
是Test
模型的一个实例。
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(...
删除模型总是需要一个新的查询,因为你不能直接删除一个实例。