-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
Если в качестве первечного ключа (параметр key) использовать не _id, то этот первичный ключ может быть изменен.
Сейчас mongodbext-relations обрабатывает такие обновелния не корректно.
Пример для воспроизведения проблемы: https://gist.github.com/lbeschastny/6aa6ce643c4d7edd0d02f8eb582e0a3c
Команда для запуска примера:
git clone git@gist.github.com:6aa6ce643c4d7edd0d02f8eb582e0a3c.git && cd 6aa6ce643c4d7edd0d02f8eb582e0a3c && npm i && node .В примере в качестве первичного ключа используется поле foo:
foreignKey: {
collection: coll1,
key: 'foo',
projection: { _id: 1, foo: 1 }
}При этом при попытке обновить поле foo в документе в коллекции coll1 кидается ошибка
Document with foo=... is not found in `coll1` collection
При этом обновление документа в коллекции coll1 на самом деле происходит, ошибка же возникает при попытке обновить его проекцию в коллекции coll2.
Соответственно, это все приводит к нарушению целостности базы, т.к. в coll1 поле обновилось, а во всех проекциях в coll2 - нет.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels