sequelizejs连接表,其他属性不起作用

时间:2013-12-25 23:30:21

标签: node.js sequelize.js

我正在尝试使用预定义模型实现具有其他属性的Sequelize连接表。但是,在我关联它并同步它的那一刻,它不会将其他属性添加到Sequelize doc中指定的关联表中。

在mysql数据库中,创建了两个表而不是一个:PartsPurchaseOrders和PurchaseOrderParts。我不知道如何让它发挥作用。

请帮助我,谢谢!

var registry  = require('../models');

module.exports.model = function(sequelize, Sequelize) {
  return sequelize.define('PurchaseOrderParts', {
    recieved: {
      type: Sequelize.BOOLEAN,
      defaultValue: false
    },
    recievedAt: {
      type: Sequelize.DATE, 
      defaultValue: null
    },
    quantity: {
      type: Sequelize.INTEGER,
      defaultValue: 0,
      validate: {min: 0}
    }
  }, {
    classMethods: {
      // this is where you add class methods
    },
    instanceMethods: {
      // this is where you add instance methods
    }
  });
};

module.exports.associations = function() {
  var PurchaseOrder = registry["PurchaseOrder"];
  var Part = registry["Part"];
  var PurchaseOrderParts = registry["PurchaseOrderParts"];

  Part.hasMany(PurchaseOrder, {through: PurchaseOrderParts});
  PurchaseOrder.hasMany(Part, {through: PurchaseOrderParts});
};

3 个答案:

答案 0 :(得分:0)

通过最近的更改,合并了几种指定连接模型属性的不同方法。之前它被称为joinTableModel

你可以尝试使用github的npm / master分支的最新版本吗?

答案 1 :(得分:0)

我已经玩过sequelize并遇到了同样的问题。

我有两张桌子:

  • 列表
  • 产品

他们有多对多的关系,我想在x-table中添加数量。解决方案是,定义我自己的ListItem模型并执行以下关联:

Item.hasMany(List, { joinTableModel: ListItem, useJunctionTable: false });
List.hasMany(Item, { joinTableModel: ListItem, useJunctionTable: false });

使用sqlite进行测试,并按预期创建表。添加列表和项目也有效,但在将项目添加到列表时不知道如何添加数量值,反之亦然。

答案 2 :(得分:0)

而不是hasMany,请使用BelongsToMany

Part.BelongsToMany(PurchaseOrder, {through: PurchaseOrderParts});
PurchaseOrder.BelongsToMany(Part, {through: PurchaseOrderParts});