Мангуст: присоединиться к операции, заселить невозможно - PullRequest
0 голосов
/ 17 ноября 2018

В настоящее время я борюсь с моим проектом.

У меня есть коллекция под названием "Игры" и одна "Участие".Когда пользователь входит в систему, он / она должен видеть games и статус индивидуального участия.Поэтому я хочу присоединиться к этим двум коллекциям , но я не могу использовать .populate (), потому что не могу ввести необходимый идентификатор участия в коллекцию игр из-за того, что у меня нет идентификатора участияв то время, когда я создаю игру. (поэтому мне нужно сохранить участие, запомнить созданный идентификатор и впоследствии вставить ЭТОТ идентификатор в коллекцию игр). В противном случае было бы хорошим решением (заполнить Игры в участии.) но изначально в этой коллекции нет участия, пока пользователь не нажмет «Участвовать» или «Не участвовать».


В основном мне нужен такой SQL-запрос:

select * from games g, participation p where g.gamesId = p.gamesId AND p.username = [...]

Есть ли возможность этого добиться?В противном случае мне нужно было бы сохранить каждое участие как «Игру», имея в ней зависимое имя пользователя и его / ее статус участия.Не предпочел бы это решение вообще.

Заранее спасибо!

На случай, если это поможет: Вот мои две коллекции:

Игра:

var gameSchema = mongoose.Schema(
{
    isHome: { type: Boolean, required: true },
    time: { type: String, required: true, max: 100 },
    uzeit: { type: String, required: true, max: 100 },
    clubId: { type: mongoose.Types.ObjectId, required: true },
    enemy: { type: String, required: true, max: 100 },
    place: { type: String, required: true, max: 100 },
    (participation: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Teilnahme' }])
});

Участие:

var participationSchema = mongoose.Schema(
    {
        playerAvailable: { type: Boolean, required: true },
        clubId: { type: mongoose.Types.ObjectId, required: true },
        gameId: { type: mongoose.Types.ObjectId, required: true, ref: 'Game' },
        memberName: { type: String, required: true },
    }
);
...