Skip to content Skip to sidebar Skip to footer

Sequelize.js Insert A Model With One-to-many Relationship

I have two sequelize models with one-to-many relationship. Let's call them Owner and Property. Assume they are defined using the sails-hook-sequelize as such (simplified). //Owner.

Solution 1:

You can't associate property existing records when you create the owner, you have to do that right after, with promise chain.

Owner.create({name:'nice owner'}).then(function(owner){ 
    owner.setProperties([{name:'nice property'}, {name:'ugly property'}]).then(/*...*/);
});

To avoid any problems with those associations (owner created but some associations failed), it's better to use transactions.

sequelize.transaction(function(t) {
    return Owner.create({name:'nice owner'}, {transaction: t}).then(function(owner){ 
        return owner.setProperties([{name:'nice property'}, {name:'ugly property'}], {transaction : t});
    });
});

However, if you want to create new Owner associated to new Properties you can do something like

Owner.create({
   name: 'nice owner',
   property: [
      { name: 'nice property'},
      { name: 'ugly property'}
   ]
},{
   include: [ Property]
}); 

See http://docs.sequelizejs.com/en/latest/docs/associations/#creating-with-associations

Post a Comment for "Sequelize.js Insert A Model With One-to-many Relationship"