我试图在我的插件中使用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的新手。
答案 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"));