如何更新mongodb中的文档字段?

时间:2016-10-12 15:35:59

标签: javascript node.js mongodb mongoose

我是Mongodb的新手,所以下面的代码我正在尝试更新文档字段string我现在根据req.body_id帖子中收到了对象我要更新string }字段,但它没有使用以下实现更新记录。如何使用_id更新记录?任何更好的异步更新记录方法都将受到赞赏。

routes.js

var Diagram = require('./diagram');
    router.post('/saveUpdateDiagram',function(req,res){
        console.log(req.body._id);
        Diagram.update(req.body);
    });

diagram.js

  var diagram = require('./diagram.model');
var mongoose = require('mongoose');

var Diagram = {
    index: function(callback) {
        diagram.find({}, function(err, result) {
            if (!err) {
                callback(result);
            }
        });
    },
    update: function(data) {
        console.log('data in controller', data);
        Diagram.update({ $set: { 'string' : data.string  } });
    }
}
module.exports = Diagram;

data.json

{
    _id: "57fe42efc3590c7686bad563"
    groups: Array[0]
    owner: "sh587"
    string: "test string should be updated"
    text: "gcs_wf_dit.bpmn"
    users: Array[1]

}

2 个答案:

答案 0 :(得分:2)

我们知道JavaScript是区分大小写的语言,您应该使用 size() 而不是length

使用`diagram.update({$ set:{'string':data.string}});

diagram.js应该是

diagram.js

if (e.target.id == "wrapper" || $(e.target).parents("#wrapper").length)

答案 1 :(得分:0)

确保图表模型中有“string”字段。因为mongoose只允许模式中可用的那些字段。如果没有,那么添加

string: {type: String}

然后使用

var diagram = require('./diagram.model');
var mongoose = require('mongoose');

var Diagram = {
    index: function(callback) {
        diagram.find({}, function(err, result) {
            if (!err) {
                callback(result);
            }
        });
    },
    update: function(data) {
        diagram.update({_id: data._id}, { $set: { 'string' : data.string  } });
    }
}
module.exports = Diagram;