在 mongo findOne 中动态设置查找键
dynamically set the lookup key in a mongo findOne
我的 REST API 允许用户决定他们希望如何查找项目。
他们有两个选项,默认选项和第二个选项。
URL 看起来像:
/项目/{id}
可选地,用户可以在请求中传递 'query',即
/item/{id}?key=sku
我正在使用 Node.js、restify 和 mongoJS。我正在尝试按如下方式在查询中动态设置 "key":
// default lookup is always id
var queryKey = '_id';
// if the optional 'via' query is set to sku change the lookup key
if(viaVal === 'sku' ){
queryKey = 'sku'
}
mongo.idpool.findOne({queryKey: id},
这会导致我在调试时出现 "illegal access" 错误并且不起作用。
- 这是什么原因?
- 实现这一目标的正确方法是什么?
当使用方括号括起变量作为 属性 名称时,您需要使用 computed property name 语法:
mongo.idpool.findOne({[queryKey]: id}, ...
我的 REST API 允许用户决定他们希望如何查找项目。 他们有两个选项,默认选项和第二个选项。
URL 看起来像:
/项目/{id}
可选地,用户可以在请求中传递 'query',即
/item/{id}?key=sku
我正在使用 Node.js、restify 和 mongoJS。我正在尝试按如下方式在查询中动态设置 "key":
// default lookup is always id
var queryKey = '_id';
// if the optional 'via' query is set to sku change the lookup key
if(viaVal === 'sku' ){
queryKey = 'sku'
}
mongo.idpool.findOne({queryKey: id},
这会导致我在调试时出现 "illegal access" 错误并且不起作用。
- 这是什么原因?
- 实现这一目标的正确方法是什么?
当使用方括号括起变量作为 属性 名称时,您需要使用 computed property name 语法:
mongo.idpool.findOne({[queryKey]: id}, ...