2014-12-03 55 views
1

我試圖用自定義的方式替換我的屬性名稱,並在nodejs/mongoskin中插入。具有變量值的替代屬性nodeJS

/* 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和節點。

+0

爲什麼不改變'測試= somethingElse'? – BatScream 2014-12-03 23:51:02

回答

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")); 
+0

這些都不適合我。我仍將項目添加到屬性「測試」而不是變量測試值。 – 2014-12-04 08:02:07

+0

@FelipeSoares由於您在代碼段中使用了mongo,因此很難向您展示此代碼在jsfiddle中的工作... – zavg 2014-12-04 13:41:04