0

文字列オブジェクトを関数に渡そうとして問題が発生しています。URL のクエリ文字列では、目的の属性を含むコンマ区切りの文字列であるフィールドを渡します。

これらの属性の名前を fields 配列に入れました。しかし今、その情報を関数に渡すのに問題があります。

以下のコードでは、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);
   }
 }
4

2 に答える 2

0

フィールドを文字列に入れる必要はありません。

var query = query.get(req.params.id).pick.apply(this,fields);
于 2012-12-01T12:24:13.657 に答える
-1

「apply」関数を関数名とパラメーターの配列(この場合はフィールド)とともに使用する必要があります

var query = query.get(req.params.id).apply('pick'、fields);

于 2012-12-01T12:01:37.913 に答える