gpt4 book ai didi

javascript - 如何在 Sequelize.js + Postgres.js 中给出主键和外键关系

转载 作者:行者123 更新时间:2023-12-03 02:13:40 25 4
gpt4 key购买 nike

我无法将关系赋予两个表“用户”和“媒体”用户的个人资料字段应包含媒体 ID。

现在我已经编写了这些模型 User 和 Media,现在我想使用联接查询来获取数据。

用户模型

const User = sequelize.sequelize.define('users', {
id: {
type: sequelize.Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
firstName: {
type: sequelize.Sequelize.STRING
},
lastName: {
type: sequelize.Sequelize.STRING
},
email: {
type: sequelize.Sequelize.STRING
},
media_id: {
type: sequelize.Sequelize.INTEGER,
foreignKey: true
}
});

Media.belongsTo(User, {
as: 'media',
foreignKey: {
name: 'media_id',
allowNull: false
}
});

User.find({where: {}, include: [Media]})
User.sync();

媒体模型

const Media = sequelize.sequelize.define('media', {
id: {
type: sequelize.Sequelize.INTEGER,
primaryKey: true
},
path: {
type: sequelize.Sequelize.STRING
},
type: {
type: sequelize.Sequelize.STRING
}
});

Media.sync();

最佳答案

首先,Media.belongsTo(User...) 会向您的 Media 模型添加一个字段 media_id,这不是您想要的想。尝试一下:

User.belongsTo(Media, {
as: 'media',
foreignKey: {
name: 'media_id',
allowNull: false
}
});

然后,您应该修改您的查询:

// Find all users with media where media.id === user.media_id
User.findAll({
include: [{
model: Media,
where: { id: Sequelize.col('user.media_id') }
}]
})

关于javascript - 如何在 Sequelize.js + Postgres.js 中给出主键和外键关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49446659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com