繁体   English   中英

Sequelize - 根据特定属性包含

[英]Sequelize - Include based on specific attribute

我有一个 model 定义如下:

sequelize.define('game', {
    id: {
        type: type.INTEGER,
        primaryKey: true,
        autoIncrement: true,
    },
    leaderId: {
        type: type.INTEGER,
        allowNull: false,
        references: {
            model: 'users',
            key: 'id',
        },
    },
    playerId: {
        type: type.INTEGER,
        allowNull: false,
        references: {
            model: 'users',
            key: 'id',
        },
    },
    status: {
        type: type.STRING,
        defaultValue: 'running',
    },
    notes: {
        type: type.TEXT,
    },
});

我正在尝试使用 Sequelize 加载所有game object 并包含 ID 等于playerId字段的User

问题是我有两个引用User model 的属性( leaderIdplayerId ),因此使用include如下不起作用:

Game.findAll({
    where: conditions,
    include: [{ model: User }],
})

有没有办法指定include命令应该使用哪个属性?

const game = sequelize.define('game', {
    id: {
        type: type.INTEGER,
        primaryKey: true,
        autoIncrement: true,
    },
    leaderId: {
        type: type.INTEGER,
        allowNull: false,
        references: {
            model: 'users',
            key: 'id',
        },
    },
    playerId: {
        type: type.INTEGER,
        allowNull: false,
        references: {
            model: 'users',
            key: 'id',
        },
        as:'player'
    },
    status: {
        type: type.STRING,
        defaultValue: 'running',
    },
    notes: {
        type: type.TEXT,
    },
});

game.associate = function (models) {
   game.belongsTo(models.user, {
      foreignKey: "playerId",
      as: "player",
   });

   game.belongsTo(models.user, {
      foreignKey: "leaderId",
      as: "leader",
   });
};

Game.findAll({
    where: conditions,
    include: ['player'],
})

Or

Game.findAll({
    where: conditions,
    include: [{model: User, as: 'player' }],
})

Or

Game.findAll({
    where: conditions,
    include: [{model: User, as: 'player', foreignKey: 'playerId' }],
})

https://github.com/nkhs/node-sequelize

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM