Я смотрю, что не так с моей схемой. Я пытаюсь вставить запись в свою коллекцию, и у меня появилось множество ошибок, поскольку я что-то изменил, но, похоже, это самое близкое, что я получил к успешной вставке документа. Я использую 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, и документы в этой коллекции могут быть вставлены просто отлично. Я должен был представить, что это ошибка схемы.