2017-06-30 9 views
1

私は関数の引数をmongodbコレクションfindに渡そうとしています。このように:mongodb引数をコレクションに渡すfind

async find() { 
    try { 
    return await db.collection('users').find.apply(null, arguments); 
    } catch(err) { 
    console.error(err); 
    } 
} 

それは私が

await db.collection('users').find() 

を実行することができます

TypeError: Cannot read property 's' of null at Collection.find (/localpath/node_modules/mongodb/lib/collection.js:282:22) 

を返し、カーソルが返されています。接続と収集が正しく設定されています。

ここには何がありますか?

答えて

1

適用する最初の引数がnullの場合、それはできません。

私はあなたが applyの最初の引数として参照を渡す示唆、またはその代わりに引数をアンラップ

await db.collection('users').find(...arguments) 

apply事項への最初の引数にnullをどのような影響を明らかにする...

// will log "hello" 
({foo:function(){console.log(this.bar)}, bar:'hello'}).foo() 

// will log undefined 
({foo:function(){console.log(this.bar)}, bar:'hello'}).foo.apply(null) 
+0

Nullが動作します。これを試してください: ' 関数b(args){ console.log( 'args'、args); }; 関数a(){ b.apply(null、arguments); } a( 'test'); ' 最初のパラメータをnullに設定せずにrestパラメータを使用すると、同じエラーが表示されます。 コードを書式設定できないと申し訳ありません。 "助け"によると、バックティックはコメントに書式設定されたコードを生成するはずですが、そうではありません。 – LongHike

+0

私は言ったようにそれを試しましたか?議論の展開をしていますか?ここで唯一異なるのは、nullを適用してコンテキストを抑制することです。 – superhero

+0

ofcそれはあなたの例で動作します、あなたは文脈を参照していません。構文上の問題ではなく、使用するコードによって異なります。私は答えを更新させてください – superhero