2012-12-01 219 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