Sails / WaterLine ORM /有很多通过:将数据插入连接表

时间:2016-11-08 17:32:11

标签: mysql node.js orm sails.js waterline

我是Sails / WaterLine ORM的新手 我跟随http://sailsjs.org/documentation/concepts/models-and-orm/associations/through-associations

一个问题。
如何将数据插入连接表?
例如:用户m - m宠物

用户模型

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

宠物模型

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

PetUser模型(连接表)

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

宠物数据可用(某些记录包含ID1,ID2,ID3 ......)
我想添加一个宠物的新用户
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
        });

    })
  } 
};

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为这还没有在帆中实施。

请参阅此问题:through associations in sails.js

以下是waterline docs的说法:

  

多对多通过关联的行为与多对多关联的行为方式相同,但自动为您创建的连接表除外。这允许您将其他属性附加到连接表内的关系。

     

即将推出