2017-12-08 4 views
0

findOneAndUpdateクエリの汎用関数を作成します。 ので、私の機能はfindOneAndUpdateクエリの汎用関数を作成します。

var findAndUpdate = function(req, res, activityname, CollectionName){ 
    CollectionName.findOneAndUpdate({activityname: req.body.user_id}, function(err, data){ 
     if(err){ 
      res.send('error'); 
     } else { 
      res.send('data') 
     } 
    }); 
}; 

のようなもので、この

findAndUpdate(req, res, 'user_id', User); 

のような関数を呼び出すしかし、ここでの唯一の問題はactivityname上です。私がQueryの下で直接 'user_id'を渡すと、それ以外の場合は何も返されません。このように

var findAndUpdate = function(req, res, activityname, CollectionName){ 
    CollectionName.findOneAndUpdate({'user_id': req.body.user_id}, function(err, data){ 
     if(err){ 
      res.send('error'); 
     } else { 
      res.send('data') 
     } 
    }); 
}; 

また、変数から値を取得した後、これとまったく同じように 'user_id'を提供しようとしました。このようになってもまだ得られない

var findAndUpdate = function(req, res, activityname, CollectionName){ 
var uid = ("'"+activityname+"'"); 
    CollectionName.findOneAndUpdate({uid : req.body.user_id}, function(err, data){ 
     if(err){ 
      res.send('error'); 
     } else { 
      res.send('data') 
     } 
    }); 
}; 

誰でも解決方法を知っていますか?

答えて

0

あなたの問題は単純なjavascriptであり、MongoDBに依存しません。例えば、

var toto = {age: 12}; 

または

var toto = {'age': 12}; 

を書くことはまったく同じ効果があります。あなたが動的にプロパティ名を定義したい場合は、このようにそれを行うことができます。

var findAndUpdate = function(req, res, activityname, CollectionName){ 
    var filter = {}; 
    filter[activityname] = req.body.user_id; 
    CollectionName.findOneAndUpdate(filter, function(err, data){ 
    if(err){ 
     res.send('error'); 
    } else { 
     res.send('data') 
    } 
    }); 
}; 

あなたのケースでは
var prop = 'age'; 
var toto = {}; 
toto[prop] = 12; 

、あなたはこのようにしたいものを達成することができます

関連する問題