猫鼬:加入行动后,无法填充

时间:2018-11-17 12:49:41

标签: javascript node.js mongoose backend populate

我目前正在为我的一个项目苦苦挣扎。

我有一个名为“游戏”的集合和一个“参与”的集合。 用户登录后,他/她应该能够看到游戏和个人参与状态。 因此,我想加入这两个集合,但是我不能使用.populate(),因为由于我没有参与ID,因此无法在Games集合中输入必要的参与ID (因此,我需要保存参与情况,记住创建的ID,然后在游戏集合中插入此ID)。 相反,这将是一个很好的解决方案(填充“参与游戏”),但是最初,在用户单击“参与”或“不参与”之前,这些集合中没有任何参与。


基本上我需要这样的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 },
    }
);

0 个答案:

没有答案