如何将动态变量用作Meteor / MongoDB集合名称?

时间:2015-05-15 10:57:34

标签: mongodb variables collections meteor

所以我尝试了这个,但它没有用(在isServer上):

var tableName= "";
(...)
if (silly_cond === 1){
    tableName = "Table1";
}else{
    tableName = "Table2";
}
TableCol = new Mongo.Collection(tableName);

出于某种原因,我无法让它发挥作用。它似乎只接受

TableCol = new Mongo.Collection("Table1");

我们的想法是从表ID中获取tablename,并将相同的JS应用于不同的表(在不同的模板上)。我做错了什么?

2 个答案:

答案 0 :(得分:0)

您需要在函数之外声明tableName,否则无法看到它。

var tableName = "";
if (silly_cond === 1){
    tableName = "Table1";
}else{
    tableName = "Table2";
}
TableCol = new Mongo.Collection(tableName);

答案 1 :(得分:0)

我最终使用了dburles:mongo-collection-instances package。它让我通过集合名称访问任何集合。所以在我的例子中:

TableCol = new Mongo.Collection("Table1");

使用上面的包我只写了例如:

var dbvar = "Table1";
Meteor.Collection.get(dbvar).find()

这样我可以使用变量来获取集合。