繁体   English   中英

如何使用Node.js脚本为复杂的json对象定义PUT方法以更新mongoDB中的记录?

[英]How to define PUT method for complex json objects for updating records in mongoDB using nodejs scripts?

我想通过使用AngularJS在mongoDB对象上使用findOneAndUpdate()来定义put方法。 我能够成功执行GETPOST操作,但是在定义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 );

我的GETPOST如下:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM