gpt4 book ai didi

node.js - sqlize/hasOne 中的关系不起作用

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

我正在尝试在商店表和产品之间创建 1:1 的关系。
每个产品都应该有一个店铺表的外键,每个店铺都应该有一个产品的外键。

我已经定义了这两个表。

module.exports = function( sequelize , DataTypes ){
var shops = sequelize.define('shops',{
id: {
type: DataTypes.INTEGER,
allowNull:false,
primaryKey:true,
autoIncrement:true
},
name:{
type:DataTypes.STRING,
allowNull:false
},
address:{
type: DataTypes.STRING,
allowNull:false
},
web:{
type: DataTypes.STRING,
allowNull:false
},
price:{
type: DataTypes.INTEGER,
allowNull:false
}
})
return shops
}

`

var shop = require('./shops.js');
module.exports = function( sequelize , DataTypes ){
var component = sequelize.define('component',{
id: {
type: DataTypes.INTEGER,
allowNull:false,
primaryKey:true,
autoIncrement:true
},
name:{
type: DataTypes.STRING,
allowNull:false
},
storage:{
type: DataTypes.INTEGER,
allowNull:false
},
bilance:{
type: DataTypes.INTEGER,
allowNull:false
}
},{
classMethods:{
associate:function(models){
component.hasOne(shop,{foreignKey:'foreign_key'})
}
}
})
return component;
}

在 db.js 文件中使用连接它。
db.shop.belongsTo(db.component)
db.component.hasOne( db.shop ,{foreignKey : 'shop_id'})

但这添加了 componentId {foreign key} 和 shop_id 另一个外键,它们都添加到商店表中。

如果我替换 1:1 关系如果 1:n 例如
db.component.hasMany(..)

它做同样的事情,将两个外键添加到商店表中。

最佳答案

您需要从回调方法中提供给您的 模型 对象中引用 shop 。所以在这种情况下,你会这样做:

classMethods:{
associate:function(models){
component.hasOne(models.shop,{foreignKey:'component_shop_FK'})
}
}

请注意,如果要向 FK 添加约束(例如非空),只需添加 allowNull: false

我相信你引用了错误的模型。您已经为您的商店对象列出了“商店”,因此请尝试将 models.shop 更改为 models.shops !

关于node.js - sqlize/hasOne 中的关系不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39519954/

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