3

我已经尝试了几个小时来使这个简单的查询工作,但不知何故它没有。我在 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({})

我得到了适当的打击。

任何想法我做错了什么?

问候克里斯蒂安

4

1 回答 1

1

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

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

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

于 2019-02-28T02:02:11.630 回答