我在尝试将字符串对象传递给函数时遇到了一些麻烦。在url的查询字符串中,我传递字段,该字段是包含感兴趣属性的逗号分隔字符串。
我将这些属性的名称放在fields数组中。但是现在我无法将该信息传递给函数。
在query.pluck('id','name')下面的代码中,query.pick(fieldString)不起作用。
我被困在这一个上,如何将fields数组中的属性名称传递给函数,以便它可以工作?
请建议。
var log = require('logule').init(module,'query');
var url = require('url');
module.exports = {
build : function(req, entity, callback) {
var isCollection;
isCollection = req.params.id? false: true;
var query = req.rethink.table(entity);
parsedUrl = url.parse(req.url, true);
console.log(isCollection);
if (parsedUrl.query.fields) {
var fields = parsedUrl.query.fields.split(',');
var total = fields.length;
fieldString = fields[0];
for (var i = 1; i < total; i++) {
fieldString += ', ' + fields[i];
}
if (isCollection) {
var query = query.pluck('id', 'name');
} else {
var query = query.get(req.params.id).pick( fieldString );
}
}
return callback(null, query);
}
}
答案 0 :(得分:0)
您不需要将字段放在字符串中,只需使用
即可var query = query.get(req.params.id).pick.apply(this,fields);
答案 1 :(得分:-1)
您需要使用带有函数名称的“apply”函数和一组参数(在您的情况下为字段)
var query = query.get(req.params.id).apply('pick',fields);