2012-12-01 53 views
0

我在尝试将字符串对象传递给函数时遇到了一些麻烦。在URL的查询字符串中,我传递的字段是一个逗号分隔的字符串,其中包含感兴趣的属性。分割一个字符串并将其传递给函数

我把这些属性的名称放在字段数组中。但是现在我无法将这些信息传递给一个函数。

在下面的代码query.pluck('id','name')起作用,query.pick(fieldString)不会。

我被困在这一个,我怎么能将字段数组中的属性名称传递给函数,以便它能够工作?

请指教。

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

回答

-1

您需要使用与函数名称的“应用”功能,和参数(在你的情况下,场)

VAR的查询= query.get(req.params.id)阵列。应用('选择',字段);

+0

这似乎并没有工作,这是我得到什么:类型错误:[对象对象功能]有没有方法“申请'\ n – user1707250

0

你并不需要把字段的字符串,只需使用

var query = query.get(req.params.id).pick.apply(this,fields); 
+0

这似乎并不奏效:对象#没有方法'编译' – user1707250

+0

这可能意味着您在代码的其他部分有问题。 'compile'听起来不像一个Javascript方法。尝试调用硬编码值的pick方法,你知道这不应该失败..并阅读更多关于'apply'的信息,https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/apply – lostsource

+0

我使用的是rethinkdb npm([email protected])你是说模块坏了? – user1707250