0

こんにちは私はjavascriptを初めて使用します。私を夢中にさせる問題があります:これとして静的に宣言されたオブジェクトの違いは何ですか:

{$or:[{tc_clpar_id:4,tc_par_id:{$in:[79,80]}},{tc_clpar_id:5,tc_par_id:{$in:[105,106]}}]}

この関数を使用して、実行時にオブジェクト costruct を作成します。

function buildQuery(self,setting,query){
var query = {$or:[]};
cl = 'tc_cl'+self.family+'_id';
att ='tc_'+self.family+'_id';
keys = Object.keys(setting);
for( var k=0;k<keys.length;k++){
    ch = keys[k];
    var q = {};
    q[cl] = ch;
    q[att] = {$in:setting[ch]};
    query.$or.push(q);
}
return query;

このオブジェクトは node-mongodb-native ドライバーのクエリとして使用されます。最初のオブジェクトは機能し、関数によって返されるオブジェクトは正しく、2 つのオブジェクトを assert.deepEqual でチェックしました。エラーはありませんが、生成されたオブジェクトを使用して空の結果セットを取得します。問題についての手がかりがありません。関数が別のオブジェクトのメソッドであるため、スコープ、またはガベージコレクターで何かおかしいと思いました。

4

0 に答える 0