我想为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 :(得分:1)
您的问题是简单的JavaScript,而不是MongoDB。例如,写
var toto = {age: 12};
或
var toto = {'age': 12};
将具有完全相同的效果。如果要动态定义属性名称,可以这样做:
var prop = 'age';
var toto = {};
toto[prop] = 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')
}
});
};