【问题标题】:How do I use a variable as a field name in a Mongo query in Meteor?如何在 Meteor 的 Mongo 查询中使用变量作为字段名?
【发布时间】:2012-08-14 23:18:23
【问题描述】:

如何在 Meteor 应用程序的 Mongo 查询中使用变量作为字段名称。

这是一个例子......

在将集合名称大写为孩子的父 ID 后,这会在我的请求控制器集合上运行查找。子项是 users 字段。

window[Meteor.request.controller.capitalise()]["find"]({ _id: Session.get('parent_id'), users: params.child }).count()

如您所见,我的控制器是集合项的变量名称,它允许我使用一行代码来查找控制器/集合的子项,但我需要能够将子字段名称设置为变量。在上面的示例中,这将是 users 但我希望它是一个变量名。

我试过了,但它不起作用。

window[Meteor.request.controller.capitalise()]["find"]({ _id: Session.get('parent_id'), [Session.get('child_collection_name').decapitalise()]: params.child }).count()

在哪里

Session.get('child_collection_name').decapitalise()

返回用户

有什么想法吗?如果我能弄清楚如何在流星的 mongo 查询中使用变量名,它将显着减少我的代码占用空间。

【问题讨论】:

    标签: javascript mongodb meteor


    【解决方案1】:

    查询只是一个 JavaScript 对象,因此您可以逐步构建它:

    var query = { _id: Session.get('parent_id') };
    var myCustomField = Session.get('child_collection_name').decapitalise();
    var myCustomValue = params.child;
    query[myCustomField] = myCustomValue;
    var count = SomeCollection.find(query).count();
    

    这样就行了吗?

    【讨论】:

    • 是的,效果很好!我什至能够弄清楚如何将它用于 $pull。还不能让它为 $addToSet 工作。这使我的代码占用空间减少了大约 80%!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多