代码之家  ›  专栏  ›  技术社区  ›  CodeHunter

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

  •  0
  • CodeHunter  · 技术社区  · 8 年前

    我想通过使用 findOneAndUpdate() 在使用AngularJS的mongoDB对象上。我能够成功地做到 GET 和 POST 操作,但我很难定义 PUT . 下面是中定义的my db对象 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 );
    

    我的 获取 和 发布 具体如下:

    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);
        });
    });
    

    对于 放置 我正在使用以下方法,但不起作用:

    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);
        });
    });
    

    如何成功地执行 放置 活动

    1 回复  |  直到 8 年前
        1
  •  1
  •   sharkdawg    8 年前

    根据 Mongoose Docs 查找和修改命令应如下所示

    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} 表示返回更新的文档。