如何将数据插入多对多的协会风帆js?

时间:2017-08-08 02:38:16

标签: sails.js

我是sails js的新手,我想使用多对多关联将数据插入mongodb,但我不知道我应该首先插入哪个集合以及如何插入它。以下是我的模特:

// User.js
module.exports={
    attributes:{
        firstname:{
            type:'string'
        },
        lastname:{
            type:'string'
        },
        pets:{
            collection:'pet',
            via:'owners',
            dominant: true
        }
    }
};
// Pet.js
module.exports={
    attributes:{
        name:{
            type:'string'
        },
        type:{
            type:'string'
        },
        owners:{
            collection:'user',
            via:'pets'
        }
    }
};

我首先尝试将数据插入宠物收藏中,但我没有看到收藏品已更新。这就是我将数据插入宠物收藏的方式:

Pet.create({'name':req.body.name,'type':req.body.type}).exec(function(err,data){
  if(err) return next(err);
  res.json(data);
});

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

如果您有现有的用户记录,您可以在添加宠物时指定它们的数组:

Pet.create({
  'name':req.body.name,
  'type':req.body.type, 
  'owners': [userId1, userId2]
}).exec(function(err,data){
  if(err) { return next(err); ]
  res.json(data);
});

或者,您可以在添加新用户时指定新的宠物ID:

Pet.create({
  'name':req.body.name,
  'type':req.body.type
}).exec(function(err,newPet){
  if(err) { return next(err); ]
  User.create({ name: 'tom', pets: [newPet.id] }).exec(function(err, newUser) {
    if (err) { return next(err); }
    return res.json({ pet: newPet, user: newUser });
  });
});

之后,在Sails 0.12.x中,您可以使用the associations docs中记录的方法添加/删除集合中的项目。在Sails 1.0中,您使用addToCollectionremoveFromCollectionreplaceCollection方法。