Невозможно найти ObjectID в сервисе стежков MongoDB - PullRequest
0 голосов
/ 03 февраля 2019

Я часами пытался заставить этот простой запрос работать, но почему-то это не так.Я создал службу HTTP в MongoDB Stitch, и я вызываю службу с таким идентификатором, как

https://stitchurl.myservice? ID = blablabla

внутри службы, которую я хочучтобы отключить учетную запись с идентификатором 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({})

, я получаю правильный удар.

Есть идеи, что я делаю неправильно?

Относительно Кристиана

1 Ответ

0 голосов
/ 28 февраля 2019

У меня была похожая проблема, и мне понадобилось время, чтобы разобраться.Проблема (возможно) связана с «Правилами», связанными с этой коллекцией.Перейдите к пункту меню «Правила» в приложении Stitch и выберите вкладку «Схема» рядом с разрешениями.Здесь вы увидите что-то вроде этого:

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

В вышеприведенном случае поле _id является objectId, а поле user_id - строкой.Схема должна соответствовать тому, что вы ищете.Надеюсь, это поможет!

...