我有我的JS文件。我在顶部声明了一个变量:
var aCollection = db.myCollection;
我有一个存储的JS程序,它接受两个参数。字符串“id”和要使用的“集合”。
如何传递两个参数,这也是一个集合作为参数?
db.eval("runSP('32', aCollection");
如果我这样做,那么我得到一个例外,说“aCollection”不存在。
我该如何解决这个问题?
答案 0 :(得分:2)
您是否尝试过执行javascript concat?
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();
}
答案 1 :(得分:0)
db.eval
可以将多个参数传递给作为第一个参数提供的函数:
db.eval(runSP, '32', aCollection);