NodeJS MongoDB适配器将字符串解释为文字而不是值

时间:2015-06-04 10:21:38

标签: javascript node.js mongodb

我有以下代码:

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')参数读取正确的列?

1 个答案:

答案 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);
    });
});