gpt4 book ai didi

node.js - sequelize.js 如何通过第三个表进行关联?

转载 作者:行者123 更新时间:2023-12-03 22:29:14 28 4
gpt4 key购买 nike

我有 3 个模型,poll、category 和 poll_to_category。

poll.server.model.js

module.exports = function(sequelize, DataTypes) {

var Poll = sequelize.define('Poll', {
poll_id:{type:DataTypes.INTEGER,primaryKey:true}
},
{
associate: function(models){
Poll.hasOne(models.Caetgory, {through:models.PollToCategory)
}
}
);

return Poll;
};

类别.server.model.js
module.exports = function(sequelize, DataTypes) {

var Category = sequelize.define('Category', {
category_id:{type:DataTypes.INTEGER, primaryKey:true}
},
{
associate: function(models){
Category.hasMany(models.Poll, {through:models.PollToCategory)
}
}
);

return Category;
};

poll_to_category.server.model.js
module.exports = function(sequelize, DataTypes) {

var PollToCategory = sequelize.define('PollToCategory', {
ptc_id:{type:DataTypes.INTEGER,primaryKey:true},
poll_id:DataTypes.INTEGER,
category_id:DataTypes.INTEGER
},
{
associate: function(models){
PollToCategory.belongsTo(models.Poll, {foreignKey:'poll_id'}),
PollToCategory.belongsTo(models.Category, {foreignKey:'category_id'})
}
}
);

return PollToCategory;
};

当我尝试查询时
db.Poll.findAll({include:db.Category}).then(function(polls,err){
if (err) return res.status(400).send({message: errorHandler.getErrorMessage(err)});
res.jsonp(polls);
});

我收到以下错误:
Possibly unhandled Error: ER_BAD_FIELD_ERROR: Unknown column 'category.poll_id' in 'field list'

我试图在 3 之间使用belongsTo/hasOne 配置,但要么出现上述错误,要么根本没有出现错误,但我收到的轮询对象的属性“类别”为“空”。我是 sequelize.js 的新手,我不确定如何问这个问题(术语方面)。

关于上述表结构,我如何急切地将类别加载到投票中?

最佳答案

您需要为第三个表名提供别名。像这样:

associate: function(models){
Poll.hasOne(models.Caetgory, {through:models.PollToCategory, as 'PollToCategory')
}

但正确的方法是让 sequelize 创建第三个实体。为此,您需要插入相关联的别名并设置固定的“通过”名称,然后 Sequelize 为您创建它。

关于node.js - sequelize.js 如何通过第三个表进行关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29632140/

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