1

私は自分のJSファイルを持っています。一番上に宣言された変数があります:

var aCollection = db.myCollection;

2 つのパラメーターを受け取るストアド JS プロシージャがあります。使用する文字列「id」と「コレクション」。

どうすれば 2 つのパラメーターを渡すことができ、それもコレクションをパラメーターとして渡すことができますか?

db.eval("runSP('32', aCollection");

上記を実行すると、「aCollection」が存在しないという例外が発生します。

これを修正するにはどうすればよいですか?

4

2 に答える 2

2

JavaScriptの連結を試してみましたか?

db.eval("runSP('32', '"+aCollection+"')"(;

コレクション変数と文字列の連結の健全性チェック:

> use test
switched to db test
> show collections
system.indexes
system.js
> var aCollection = db.system.js;
> print ("foo" + aCollection + "bar");
footest.system.jsbar

関数は、コレクションの文字列名を受け取ります。それがすべての関数が期待している場合は、問題ありません。JavaScript 関数内でコレクションを解決する必要がある場合は、次のようにします。

function runSP(numberVal, aCollection) {
    var coll = db[aCollection];
    coll.find();
}
于 2012-07-17T03:58:28.637 に答える
0

db.eval最初のパラメーターとして提供される関数に渡される複数のパラメーターを受け取ることができます。

db.eval(runSP, '32', aCollection);
于 2012-07-17T04:39:22.893 に答える