Вопрос:

«Правильный» способ синхронизации таблиц БД API

node.js rest api express mongoose

77 просмотра

1 ответ

40 Репутация автора

Я впервые создаю приложение в одиночку (back-end, front-end, design), и я мог бы использовать некоторые рекомендации для моего back-end.

Допустим, есть таблица Users, Jobs и Applications (Job Applications). Прямо сейчас у меня это структурировано так:

UserSchema {
  // other attributes
  _id: String,
  application_ids: [String] // array of String id's 
}

JobSchema {
  // other attributes
  _id: String,
  application_ids: [String]
} 

ApplicationSchema {
  // other attributes
  _id: String,
  applicant_id: String, // the _id of a User
  job_id: String        // the _id of a Job
}

Мой текущий план похож на то, что когда создается новый Application(через POST /api/applicationsкоторый я отправляю _id пользователя и _id задания), я затем устанавливаю для приложения applicant_idзначение _id пользователя, а затем обновляю как application_idsмассив пользователя, так и массив задания application_ids.

Вопрос: я поступаю разумно или касаюсь слишком большого количества таблиц для одного запроса POST? В моем приложении есть другие таблицы / схемы, которые будут следовать аналогичной структуре отношений. Тогда есть вопрос удаления Приложений, а затем необходимо application_idsснова обновить и т. Д., И т. Д., Но это другой вопрос.

Примечание: я использую Express.js и Mongoose.js, если это помогает

Автор: Chris Jang Источник Размещён: 22.08.2016 08:31

Ответы (1)


2 плюса

28165 Репутация автора

Решение

Нет, ты не должен делать это таким образом. Сохраняя идентификатор пользователя и задания в приложении, вы можете использовать запрос, чтобы получить все приложения пользователя или все приложения для данной работы. Не нужно трогать оба.

Если вы действительно хотите, чтобы отношения были с обеих сторон, по крайней мере, установите их как ObjectId и используйте объявление "ref". Проверьте заполненные документы в документах мангусты.

Автор: Paul Размещён: 22.08.2016 08:49
Вопросы из категории :
32x32