我在电表和电表读数之间建立关系。似乎有一个错误,Postgres / Sequelize期望外键是INTEGER
类型。我喜欢修理它。
var Station = sequelize.define('Station', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
kin: DataTypes.STRING,
// other columns
var EKMreading = sequelize.define('EKMreading', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
"Meter": DataTypes.STRING,
// other columns
EKMreading.belongsTo( Station, { as: 'KIN', foreignKey: 'kin'});
Station.hasMany( EKMreading, { as: { singular: 'reading', plural: 'readings'} } );
EKMreading.create({ data blah, blah })
.then(function( reading ) {
Station.find({where: {ekmOmnimeterSerial: reading.Meter}})
.then(function( station ) {
reading.setKIN( station.kin ); // breaks stuff, see below
station.addReading( reading )
.then(function() {
console.log('Made relationship.');
});
});
});
Error setting reading on Station. { [SequelizeDatabaseError: invalid input syntax for integer: "007-0020-001-04-K"]
答案 0 :(得分:0)
基于这个错误,我认为我有一个问题,我给出了一个字符串的主键,但它需要一个整数。
真正的问题是你必须将整个实例传递给setter:
// before
reading.setKIN( station.kin );
// after
reading.setKIN( station );
setter将自动从工作站获取主键并将其指定为读取中的外键。
如何将外键设置为与另一个表的主键不同?例如,如何使读数上的外键对应于Station的KIN而不是其自动增量ID?