【问题标题】:Unable to search for ObjectID in MongoDB stitch service无法在 MongoDB 缝合服务中搜索 ObjectID
【发布时间】:2019-02-28 10:02:11
【问题描述】:

我已经尝试了几个小时来使这个简单的查询工作,但不知何故它没有。我在 MongoDB Stitch 中创建了一个 HTTP 服务,并使用这样的 ID 调用该服务

https://stitchurl.myservice?ID=blablabla

在服务内部,我想禁用 ID 为 x 的帐户,所以我尝试这样称呼它:

exports = function(payload) {

    var queryArg = payload.query || '';
    var ID = queryArg.ID || '';
    if(ID !== "")
    {
        const mongodb = context.services.get("mongodb-atlas");
        const mycollection = mongodb.db("myDB").collection("myCollection");
        var oID = new BSON.ObjectId(ID);
        return mycollection.updateOne({oID}, {$set:{isdisabled: true}});
    }
}

不管我是否查询:

{ID}
{oID}
{_id:ID}
{_id:oID}
...

我总是收到 0 个结果,但是当我在 MongoDB Atlas 集合中时,我可以查询

{_id:ObjectId("myID")}

并获得正确的结果。规则和权利都没有问题,因为如果我跑了

return mycollection.findOne({})

我得到了正确的打击。

任何想法我做错了什么?

问候克里斯蒂安

【问题讨论】:

  • 你试过类似{"_id": BSON.ObjectId("5cbf35751c9d44000054e54f")})吗?
  • 你有没有得到这个工作?现在是五月,似乎这个问题仍然存在,我无法从缝合函数中的任何集合中找到
  • 有人对此有任何解决方案吗?我面临同样的问题。

标签: javascript mongodb mongodb-stitch


【解决方案1】:

有一个类似的问题,我花了一段时间才弄清楚。问题是(可能)由于与此集合相关的“规则”。转到 Stitch 应用程序中的“规则”菜单项,然后选择权限旁边的“模式”选项卡。在这里你会看到这样的东西:

{
  "properties": {
    "_id": {
      "bsonType": "objectId"
    },
    "user_id": {
      "bsonType": "string"
    }
  }
}

在上面的例子中,_id 字段是一个 objectId,而 user_id 字段是一个字符串。架构必须与您正在搜索的内容相匹配。希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2013-04-11
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    相关资源
    最近更新 更多