gpt4 book ai didi

node.js - 使用 sequelize 复制外键列

转载 作者:行者123 更新时间:2023-11-29 13:26:32 24 4
gpt4 key购买 nike

我有一个使用sequelize的node项目,有下面两个表

"use strict";

module.exports = function(sequelize, DataTypes) {
var asset = sequelize.define("asset", {
description : DataTypes.STRING,
maker : DataTypes.STRING,
model : DataTypes.STRING,
serialNumber : DataTypes.STRING,
barcode : DataTypes.STRING,
account : DataTypes.INTEGER,
usefulLife : DataTypes.INTEGER,
downtimeCosts : DataTypes.FLOAT,
purchasePrice : DataTypes.FLOAT
}, {
classMethods: {
associate: function(models) {
/*Un estado es de muchas categorias, y no se puede borrar si tiene un activo asociado*/
asset.belongsTo(models.assetState, {
onDelete: "RESTRICT",
foreignKey: {
allowNull : false,
name : 'assetState_id'
}
});
}

}
});

return asset;
};


"use strict";

module.exports = function(sequelize, DataTypes) {
var assetState = sequelize.define("assetState", {
state: DataTypes.STRING
}, {
classMethods: {
associate: function(models) {
assetState.hasMany(models.asset)
}
}
});

return assetState;
};

问题是,当我检查 postgres 中的 Assets 表时,我有两列(“assetState_id”、“assetState”),我想那是因为我明确给出了关系的名称,因为我可以不生成“assetState”列?

谢谢

最佳答案

您可以在 assetState 表中声明一个主键,然后在关联定义中引用它:

var assetState = sequelize.define("assetState", {
assetState_id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
state: DataTypes.STRING
}, {
classMethods: {
associate: function(models) {
assetState.hasMany(models.asset, { foreignKey: 'assetState_id' })
}
}
});

关于node.js - 使用 sequelize 复制外键列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32870428/

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