【问题标题】:dynamically set the lookup key in a mongo findOne在 mongo findOne 中动态设置查找键
【发布时间】:2017-04-26 19:00:41
【问题描述】:

我的 REST API 允许用户决定他们希望如何查找项目。 他们有两个选项,一个默认选项和第二个选项。

网址如下所示:

/item/{id}

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

/item/{id}?key=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},

这会在我调试时导致“非法访问”错误并且无法正常工作。

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

【问题讨论】:

    标签: node.js mongodb rest mongojs


    【解决方案1】:

    使用方括号将变量括起来作为属性名称时,您需要使用computed property name 语法:

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

    【讨论】:

    • 感谢您的回答和分享链接。我试图用谷歌搜索它,但不知道“计算属性名称”是要搜索的词。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2018-01-09
    • 2021-11-14
    • 1970-01-01
    • 2019-12-27
    相关资源
    最近更新 更多