Node.js和SQL Server Sequelize联接表

时间:2018-06-22 03:41:21

标签: sql node.js sequelize.js

我尝试将列设置为外键,但出现错误

  

未处理的拒绝SequelizeForeignKeyConstraintError:MERGE语句与FOREIGN KEY约束“ FK__Wishlists__produ__03C67B1A”发生冲突。在数据库“数据库”,表“ dbo.posts”,列“ productid”中发生了冲突。

productid中,外键名称为cart_table,在product_table中,主键为productid

Cart.belongsTo(Product, {foreignKey: 'productid', targetKey: 'productid'});

这甚至是正确的方法吗?

场景:

  • 用户将商品添加到购物车。
  • 购物车表将添加商品信息:用户名(添加商品的用户名),产品ID(与produc_table中的productid {primaryKey}相同)

我想通过将cart_table与product_table联接来操纵数据,这样结果将是:

购物车产品表

username: alex
cart_table.productid: 01
product_table.productid: 01
productName: Shampoo
productPrice: 12

2 个答案:

答案 0 :(得分:0)

根据您的情况,您正在进行ProductCart的一对一映射。

您确实将购物车与产品相关联,

Cart.belongsTo(Product, {
    foreignKey: 'productid',
    targetKey: 'productid'
});

同样,您也必须将产品关联到购物车。

Product.belongsTo(Cart, {
    foreignKey: 'productid',
    sourceKey: 'productid'
});

答案 1 :(得分:0)

如评论中所述,由于您收到错误,因此购物车中有数据。

Cart.belongsTo(Product, {foreignKey: 'productid', targetKey: 'productid'}); 

以此更改此代码。

Cart.belongsTo(Product, {
     foreignKey: 'productid', 
     targetKey: 'productid',
     defaultValue : 0
});

您只需添加默认值