Javascript 如何在Meteor中的Mongo查询中使用变量作为字段名?
如何在Meteor应用程序中的Mongo查询中使用变量作为字段名 这里有一个例子 这将在将子项的父id的集合名称大写后运行“查找我的请求控制器”集合。子项是用户字段 正如您所看到的,我的控制器是集合项的变量名,它允许我使用一行代码来查找控制器/集合的子项,但我需要能够将子字段名设置为变量。在上面的例子中,这将是用户,但我希望它是一个变量名 我试过这个,但不起作用Javascript 如何在Meteor中的Mongo查询中使用变量作为字段名?,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,如何在Meteor应用程序中的Mongo查询中使用变量作为字段名 这里有一个例子 这将在将子项的父id的集合名称大写后运行“查找我的请求控制器”集合。子项是用户字段 正如您所看到的,我的控制器是集合项的变量名,它允许我使用一行代码来查找控制器/集合的子项,但我需要能够将子字段名设置为变量。在上面的例子中,这将是用户,但我希望它是一个变量名 我试过这个,但不起作用 window[Meteor.request.controller.capitalise()]["find"]({ _id: Sessi
window[Meteor.request.controller.capitalise()]["find"]({ _id: Session.get('parent_id'), [Session.get('child_collection_name').decapitalise()]: params.child }).count()
在哪里
返回用户
有什么想法吗?如果我能在meteor中找出如何在mongo查询中使用变量名,这将大大减少我的代码占用。该查询只是一个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%!
Session.get('child_collection_name').decapitalise()
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();