使用nodejs的sequelize更新多对多连接表

时间:2015-03-25 04:23:14

标签: node.js postgresql sequelize.js

我有一个Products表和Categories表。单个产品可以包含多个类别,单个类别可以包含许多产品,因此我有一个ProductsCategories表来处理多对多连接。

在下面的示例中,我尝试将我的一个产品(ID为1)与3个不同类别(ID为1,2和3)相关联。我知道下面的代码片段中有些内容已关闭,因为我收到一条丑陋的SQL错误消息,表明我正在尝试将对象插入到ProductsCategories连接表中。我不知道如何修复下面的代码段或者我是否在这里正确的轨道上。对于这种事情,Sequelize文档非常稀疏。

models.Product.find({ where: {id: 1} }).on('success', function(product) {
  models.Category.findAll({where: {id: [1,2,3]}}).on('success', function(category){
    product.setCategories([category]);
  });      
});

我非常感谢你们的帮助,谢谢。另外,我使用Postgres,不确定是否重要。

2 个答案:

答案 0 :(得分:8)

models.Category.findAll返回一个数组。通过执行setCategories([category]);,您将该数组包装在一个数组中。请尝试将其更改为setCategories(category);

答案 1 :(得分:1)

我认为你很亲密。我的一些代码遇到了类似的问题。尝试迭代找到的类别,然后添加它们。我认为这可能会成功。

models.Category.findAll({where: {id: [1,2,3]}}).on('success', function(category){
            for(var i=0; i<category.length; i++){
                product.setCategories([category[i]]);
            }
      });