Как работать с несохраненными сущностями, хотя атрибут ID необходим? - PullRequest
0 голосов
/ 19 декабря 2018

Я создаю приложение React, в котором мои данные имеют следующую структуру:

interface BookCase {
    id: number;
    bookShelves: BookShelf[];
}
interface BookShelf {
    id: number;
}

Каждый книжный шкаф и каждая книжная полка имеет свойство id.Я использую это для атрибута key и для поиска книжной полки внутри массива bookShelves.Идентификатор генерируется в бэкэнде базой данных (с BigSerial в PostgreSQL) при сохранении.

Теперь я хочу создать новый книжный шкаф внутри моего интерфейса без , сразу же сохранив его вбэкэндСначала я хочу поработать с ним, выполнить с ним некоторые операции (например, поместить книгу на полку), а затем отправить всю серию изменений с новыми сущностями в серверную, где она затем будет сохранена в базе данных.

Конечно, у меня еще нет идентификатора, хотя он мне нужен для работы с книжными шкафами.Должен ли я переписать свое приложение, чтобы также принять null для идентификатора (я бы предпочел не делать этого)?Должен ли я просто случайно создать временный идентификатор, возможно, с дубликатами с идентификаторами, уже присутствующими в базе данных (или, например, использовать отрицательное значение, например -1)?Затем мне нужно будет заменить все идентификаторы после того, как они были сохранены в базе данных.

С UUID я мог бы сгенерировать их на внешнем интерфейсе, но я думаю, что также должен быть общий шаблон для работы только сувеличивающие целые числа в качестве идентификатора.

1 Ответ

0 голосов
/ 20 декабря 2018

Я не думаю, что здесь есть четкий ответ.

По сути, у вас есть объектно-реляционное отображение, и существуют различные способы его обработки.Entity Framework, например, просто использует значение по умолчанию для типа данных.Поэтому, если сущность еще не существует, идентификатор будет 0, а любые постоянные сущности имеют значения, начинающиеся с 1, поэтому никаких конфликтов нет.

Один из способов, которыми я обычно занимаюсь сохранением, - возвращение обновленной записи.из запроса, так что вы просто замените старый на этот, и у вас автоматически будет правильное значение идентификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...