Поле Owner_id не проходит ошибку проверки. Что не так с моей схемой? - PullRequest
0 голосов
/ 13 марта 2020

Я смотрю, что не так с моей схемой. Я пытаюсь вставить запись в свою коллекцию, и у меня появилось множество ошибок, поскольку я что-то изменил, но, похоже, это самое близкое, что я получил к успешной вставке документа. Я использую mongodb-stitch-browser-sdk в проекте React Ioni c, и у меня есть действительный пользователь, вошедший в систему.

Я использую StitchUser.id, который является строкой в ​​качестве моего owner_id (соответствует идентификатор моего действительного пользователя в коллекции пользователей).

Вот моя схема с последующей ошибкой в ​​журналах стежков. Я просто пытался вставить документ в таблицу целей. Кроме того, в этой коллекции нет фильтров, и есть только одна роль со следующим правилом.

{
  "owner_id": "%%user.id"
}

Это дает пользователю права на чтение и запись для созданной коллекции.

{
  "bsonType": "object",
  "required": [
    "goalTitle",
    "startDate",
    "endDate",
    "owner_id"
  ],
  "properties": {
    "_id": {
      "bsonType": "objectId"
    },
    "owner_id": {
      "bsonType": "string",
      "validate": {
        "%or": [
          {
            "%%prevRoot.owner_id": {
              "%exists": false
            }
          },
          {
            "%%prevRoot.owner_id": "%%this"
          }
        ]
      }
    },
    "goalTitle": {
      "bsonType": "string",
      "minLength": {
        "$numberInt": "1"
      },
      "maxLength": {
        "$numberInt": "30"
      }
    },
    "goalDescription": {
      "bsonType": "string",
      "minLength": {
        "$numberInt": "0"
      },
      "maxLength": {
        "$numberInt": "600"
      }
    },
    "startDate": {
      "bsonType": "string"
    },
    "endDate": {
      "bsonType": "string"
    }
  }
}
Error:
role "owner" in "todo_list.Goals" does not have insert permission for document with _id: ObjectID("5e6aa8d11d233536e3ea8604"): could not validate document: 
    owner_id: Does not pass validation
Stack Trace:
StitchError: insert not permitted
Details:
{
  "serviceAction": "insertOne",
  "serviceName": "mongodb-atlas",
  "serviceType": "mongodb-atlas"
}
{
  "arguments": [
    {
      "collection": "Goals",
      "database": "todo_list",
      "document": {
        "goalTitle": "Test Goal",
        "goalDescription": "Test Description",
        "endDate": "2020-03-11",
        "startDate": "2020-03-10",
        "owner_id": "5e6891382e6039c1c32f7d46",
        "_id": {
          "$oid": "5e6aa8d11d233536e3ea8604"
        }
      }
    }
  ],
  "name": "insertOne",
  "service": "mongodb-atlas"
}

Я создал другую коллекцию без схемы и с тем же правилом проверки для owner_id, и документы в этой коллекции могут быть вставлены просто отлично. Я должен был представить, что это ошибка схемы.

...