具有变量值nodeJS的替换属性

时间:2014-12-03 23:42:11

标签: node.js mongodb

我试图在我的插件中使用nodejs / mongoskin以自定义方式替换我的属性名称。

/* Insert new object */
router.post('/save', function(req, res) {
    var db = req.db;
    db.collection('objects').insert(req.body, function(err, result) {
        if (result) {
            var test= "try";
            //insert read and write permissions to Administrator
            db.collection('roles').findAndModify({name:"Administrator"},{_id:1}, {$push:{test: { $each: [ {read:true}, {write:true} ] }}}, function(err, result){
                    res.send(
                        (err === null) ? { msg: '' } : { msg: err });
                })
        }}
    )
});

不是插入名为try的数组,而是插入test

我希望我可以用我的自定义变量替换test属性。

我是mongo和node的新手。

1 个答案:

答案 0 :(得分:0)

最简单的答案是在代码之外使用全局变量:

var test = "try";

/* Insert new object */
router.post('/save', function(req, res) {
    var db = req.db;
    db.collection('objects').insert(req.body, function(err, result) {
        if (result) {                 
            //insert read and write permissions to Administrator
            db.collection('roles').findAndModify({name:"Administrator"},{_id:1}, {$push:{test: { $each: [ {read:true}, {write:true} ] }}}, function(err, result){
                    res.send(
                        (err === null) ? { msg: '' } : { msg: err });
                })
        }}
    )
});

但这通常是不好的做法。

另一种方法是使用您的参数构建回调函数:

var createCallback = function(_property) {
    return function(req, res) {
       var db = req.db;
       db.collection('objects').insert(req.body, function(err, result) {
          if (result) {
            var test = _property;
            //insert read and write permissions to Administrator
            db.collection('roles').findAndModify({name:"Administrator"},{_id:1}, {$push:{test: {                        $each: [ {read:true}, {write:true} ] }}}, function(err, result){
                    res.send(
                        (err === null) ? { msg: '' } : { msg: err });
                });
        }});
    }
}


router.post('/save', createCallback("try"));