使用json和sequelize创建n:m个对象?

时间:2015-06-22 16:18:06

标签: javascript json node.js sequelize.js

我正在尝试学习sequelize,但是在创建n:m对象时遇到了麻烦。到目前为止,我有2个模型可以创建3个表(Store,Product,StoreProducts)和下面的模型:

模型/ Store.js

module.activate = function(settings){
    var self = this;
    this.myMap = ko.observable({
        lat: 34.1,
        lng: 31.6});

    this.compositionComplete = function(child, parent, settings){
    };
};
return module;

模型/ Product.js

module.exports = (sequelize, DataTypes) => {
    return Store = sequelize.define('Store', {
        name: {
            type: DataTypes.STRING,
        },
        address: {
            type: DataTypes.STRING,
        }
    });
};

模型/ Index.js

module.exports = function(sequelize, DataTypes) {
  return Product = sequelize.define('Product', { 
        name: {
            type: DataTypes.STRING,
        }
  });
};

我想“添加”以下json对象。

 models.Store.belongsToMany(models.Products, {through: 'StoreProducts', foreignKey: 'storeId'});
 models.Products.belongsToMany(models.Store, {through: 'StoreProducts', foreignKey: 'productId'});

寻找任何方向,我已经尝试了大约10条路线,我能够得到的最好的是创建的商店和产品记录,但没有关系。

1 个答案:

答案 0 :(得分:4)

查看nested creation(该功能尚未记录)

Store.create({
  name:'corner store',
  address: '123 Main Street',
  products: [
    { name: 'string beans' }, { name: 'coffee' }, { name: 'milk' }
  ]
}, {
  include: [Product]
});

这将创建商店和产品,并将两者联系起来。

请注意,这仅适用于创建 - 您无法使用它将新产品与现有商店等相关联。

Store.find().then(function (store) {
  store.createProduct({ name: 'hats' });
});