duyCuong
duyCuong

Reputation: 57

Sails / WaterLine ORM / Has Many Through: Insert data into join table

I'm newbie with Sails/WaterLine ORM
I'm following http://sailsjs.org/documentation/concepts/models-and-orm/associations/through-associations

One question.
How way to insert data into a join table ?
For example: User m - m Pet

User model

module.exports = {
  attributes: {
    name: {
    type: 'string'
  },
  pets:{
    collection: 'pet',
    via: 'owner',
    through: 'petuser'
  }
}

Pet model

module.exports = {
  attributes: {
    name: {
    type: 'string'
  },
  color: {
    type: 'string'
  },
  owners:{
    collection: 'user',
    via: 'pet',
    through: 'petuser'
  }
}

PetUser model (join table)

module.exports = {
  attributes: {
    owner:{
      model:'user'
    },
    pet: {
      model: 'pet'
    }
  }
}

Pet data is available (some record with ID1, ID2, ID3...)
I want to add new one user with some pets
PetUser ( id , id_of_user, id_of_pet)
1, U1, P1
2, U1, P2

{
    "name" : "John",
    "pets" : [2,3]
}

UserController

module.exports = {

    addUserWithPets: function(req, res) {
    User.create(req.body).exec(function(err, user) {
        if(err){
            throw err;
        }else { 
            /*pets.forEach(function(pet, index){
                user.pets.add(pet);
            })
            user.save(function(err) {});*/

            user.pets.add(data);

            user.save(function(err) {});
        }

        return res.ok({
            data: user
        });

    })
  } 
};

Thanks!

Upvotes: 0

Views: 679

Answers (1)

Ranjan
Ranjan

Reputation: 448

I think this hasn't been implemented yet in sails.

Refer to this question: through associations in sails.js on SO.

Here is what waterline docs say:

Many-to-Many through associations behave the same way as many-to-many associations with the exception of the join table being automatically created for you. This allows you to attach additional attributes onto the relationship inside of the join table.

Coming Soon

Upvotes: 1

Related Questions