Angularjs 如何为复杂的json对象定义PUT方法,以便使用nodejs脚本更新mongoDB中的记录?

Angularjs 如何为复杂的json对象定义PUT方法,以便使用nodejs脚本更新mongoDB中的记录?,angularjs,node.js,mongodb,Angularjs,Node.js,Mongodb,我想通过在使用AngularJS的mongoDB对象上使用findOneAndUpdate()来定义一个put方法。我能够成功地执行GET和POST操作,但我很难定义PUT。下面是在app.js文件中定义的我的db对象: var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/testing23'); var idObj = Schema({ _id: String

我想通过在使用AngularJS的mongoDB对象上使用
findOneAndUpdate()
来定义一个put方法。我能够成功地执行
GET
POST
操作,但我很难定义
PUT
。下面是在
app.js
文件中定义的我的db对象:

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}
意味着返回更新的文档