我有两个从CLI生成的Sequelize模型
'use strict';
module.exports = function(sequelize, DataTypes) {
var ticket_sold = sequelize.define('ticket_sold', {
ticket_id: DataTypes.INTEGER,
bus_id: DataTypes.INTEGER,
departure: DataTypes.INTEGER,
destination: DataTypes.INTEGER,
passenger_id: DataTypes.INTEGER,
amount: DataTypes.FLOAT,
status: DataTypes.BOOLEAN,
is_deleted: DataTypes.BOOLEAN
}, {
classMethods: {
associate: function(models) {
}
}
});
return ticket_sold;
};

和
'use strict';
module.exports = function(sequelize, DataTypes) {
var locations = sequelize.define('locations', {
name: DataTypes.STRING,
status: DataTypes.BOOLEAN,
is_deleted: DataTypes.BOOLEAN
}, {
classMethods: {
associate: function(models) {
}
}
});
return locations;
};

我需要将出发地和目的地与位置字段的ID相关联。我不能只使用has many / belongssto,因为它会创建另一个字段。
我试过了 tickets_sold.departure.belongsTo(models.locations,{ onDelete:" CASCADE&#34 ;, 外键:{ 允许为空:假 } }) 但这没用。
如何将这两个字段与位置表相关联?
答案 0 :(得分:0)
您需要使用targetKey
property
来自文档:
目标键是源模型上的外键列指向的目标模型上的列。默认情况下,belongsTo关系的目标键将是目标模型的主键。要定义自定义列,请使用targetKey选项。
因此,在您的情况下,您需要执行以下操作:
teams
-------
id (int, primary)
name (varchar[255])
games
-------
id (int, primary)
home_team (int - references `id` on `teams`)
away_team (int - references `id` on `teams`)
date (datetime)
home_score (int)
away_score(int)