Я работаю над проектом, и у меня есть эти две коллекции MongoDB: команда (содержит данные о командах) и оплата (содержит оплату команд) (строго 1-1 отношения).
Payment Schema
{
...
team: { type: Schema.Types.ObjectId, ref: 'Team', unique: true },
...
}
Для команды у меня есть две альтернативы:
Team1 Schema
{
user_id: { type: Schema.Types.ObjectId, ref: 'User' }
}
...
Team2 Schema
{
user_id: { type: Schema.Types.ObjectId, ref: 'User' }
payment: { type: Schema.Types.ObjectId, ref: 'Payment', unique: true }
}
NEED: У меня есть компонент "Мои команды", где мне нужнопоказать вошедшего в систему пользователя все команды и его статус платежа (да / нет).
ВЫПУСК С Team1 Схема: Поскольку у меня нет ссылки на Платеж, поэтому мне нужно сделать еще один звонокбэкэнд с _id команды, чтобы получить объект оплаты для каждой команды.Если у пользователя есть 10 команд, то это будут 11 внутренних вызовов (1 для команд, следующие 10 для их статусов платежей).
ВЫПУСК С Схемой Team2: Поскольку у меня теперь есть Payment _id внутриСхема Team2, поэтому я могу просто проверить, существует ли это поле или нет, чтобы определить, оплачено ли оно или нет.Но теперь проблема в том, что при совершении платежа мне нужно обновить обе коллекции и использовать транзакции (для отката в случае сбоя), что увеличивает сложность и также не поддерживается, если у меня не установлен набор реплик.
Не могли бы вы помочь мне выяснить это как можно лучше?
Заранее спасибо.