[英]How to define PUT method for complex json objects for updating records in mongoDB using nodejs scripts?
我想通过使用AngularJS在mongoDB对象上使用findOneAndUpdate()
来定义put方法。 我能够成功执行GET
和POST
操作,但是在定义PUT
时遇到困难。 以下是我在app.js
文件中定义的数据库对象:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/testing23');
var idObj = Schema({
_id: String,
name : {
firstname : String,
lastname : String
},
phones : [Number],
emails : [String],
friends : [String]
});
var Error = mongoose.model('Error', idObj );
我的GET
和POST
如下:
app.get('/api/info',function(req,res){
Error.find(function(err,infos){
if(err)
return res.send(err);
return res.json(infos);
});
});
app.post('/api/info',function(req,res){
Error.create(req.body, function(err,infos){
if(err)
return res.send(err);
return res.json(infos);
});
});
对于PUT
我正在使用以下方法,但是它不起作用:
app.put('/api/infos/:id',function(req,res){
Error.findOneAndUpdate({_id: req.params.id},req.body,function(err,infos){
if(err)
return res.send(err);
return res.json(infos);
});
});
如何成功进行PUT
操作?
根据猫鼬文档,您的查找和修改命令应如下所示
Model.findOneAndUpdate(query, { $set: { name: 'jason bourne' }}, options, callback)
对于您提供的示例并说您想更新名称,它将是
Error.findOneAndUpdate({_id: req.params.id},{ $set: { name: req.body }},{new: true},function(err,updatedInfos){
if(err)
return res.send(err);
return res.json(updatedInfos);
});
使用{new:true}
表示将返回更新的文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.