我有以下代码:
var keyExp = 'experienceCat' + req.param('category');
User.native(function(err,collection)
{
collection.find({'_id':{$in:usersArray}},{fields:{'name':1,'avatar':1,'fbId':1,'country':1,keyExp:1}}).toArray(function (err,userProfiles)
{
res.send(userProfiles);
});
});
问题在于,不是将keyExp更改为其当前值(例如,应该是"experienceCat0"
),而是实际上尝试查找名称为"keyExp"
的列当然是不存在。
代码应该如何根据req.param('category')
参数读取正确的列?
答案 0 :(得分:1)
今天你应该怎么做:
var fields = {'name':1,'avatar':1,'fbId':1,'country':1};
fields['experienceCat' + req.param('category')] = 1;
User.native(function(err,collection){
collection.find({'_id':{$in:usersArray}},{fields:fields}).toArray(function (err,userProfiles)
{
res.send(userProfiles);
});
});
使用ES6 you'll be able to express that in a more concise way:
var keyExp = 'experienceCat' + req.param('category');
User.native(function(err,collection){
collection.find( ... ,'fbId':1,'country':1,[keyExp]:1}}).toArray(function (err,userProfiles)
^^^^^^^^
{
res.send(userProfiles);
});
});