Skip to content

Неправильно обрабатывается обновление первичного ключа #7

@lbeschastny

Description

@lbeschastny

Если в качестве первечного ключа (параметр 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 - нет.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions