无法在MongoDB针脚服务中搜索ObjectID

时间:2019-02-03 12:33:39

标签: javascript mongodb mongodb-stitch

我已经尝试了几个小时才能使这个简单的查询正常工作,但是不成功。我已经在MongoDB Stitch中创建了HTTP服务,并且使用这样的ID调用该服务

https://stitchurl.myservice?ID=blablabla

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

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="selectObj">
  <option value="first">First</option>
  <option value="second">Second</option>
</select>

<button type="button" id="submitBtn" >Test</button>

无论我是否查询:

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}});
    }
}

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

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

,并获得正确的结果。规则或权限没有问题,因为如果我运行

{_id:ObjectId("myID")}

我受到了适当的打击。

有什么想法我在做什么错吗?

关于基督徒

1 个答案:

答案 0 :(得分:0)

有一个类似的问题,我花了一段时间才弄清楚。问题(可能)是由于与此收藏集相关的“规则”造成的。转到Stitch应用程序中的“规则”菜单项,然后选择权限旁边的“模式”标签。在这里,您将看到类似这样的内容:

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

在上述情况下,_id字段是一个objectId,而user_id字段是一个字符串。模式必须匹配您要搜索的内容。希望这会有所帮助!