在mongo findOne中动态设置查找键

时间:2016-12-11 22:37:15

标签: node.js mongodb rest mongojs

我的REST API允许用户决定他们想要查找项目的方式。 它们有两个选项,默认选项和第二选项。

网址如下:

/项目/ {ID}

用户可以选择对请求传递“查询”,即

/项目/ {ID}?键= SKU

我正在使用Node.js,restify和mongoJS。我正在尝试动态设置查询中的“键”,如下所示:

    // 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},

当我正在调试并且不起作用时,这会导致“非法访问”错误。

  • 这是什么原因?
  • 实现这个目标的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

使用变量作为属性名称时,需要使用computed property name语法,方法是将其括在方括号中:

mongo.idpool.findOne({[queryKey]: id}, ...