如何使用Sails.js + Angular.js和RestAngular在关系模型中获取此数据

时间:2015-10-06 03:54:34

标签: angularjs sails.js waterline restangular

如何获取此模型的数据:

//User.js
module.exports={
name:{
type:'string'
},
pets:{
collection:'pet',
via:'owner'
},
cars:{
collection:'car',
via:'owner'
}
}

//Pet.js
module.exports={
name:{
type:'string'
},
owner:{
model:'user' 
}, 
doctors:{
collection:'doctor',
via:'pets'
}
};

//Car.js
module.exports={
color:{
type:'string'
},
owner:{
model:'user'
}
}
//doctor.js
module.exports={
name:{
type:'string'
},
pets:{
collection:'pet',
via:'doctors'
}
    };

使用RestApi路线与Restangular一起消费,如何让所有宠物拥有蓝色车?如何使用多种关系(宠物< -owner->汽车)

使用RestApi路线与Restangular一起使用,如何让所有使用宠物的用户与Mr XYZ医生有关系?如何使用多种关系(用户 - >宠物< - >医生)

感谢您的关注,如果我的问题需要改进,请发表评论,我会纠正任何问题。

1 个答案:

答案 0 :(得分:2)

有一天

Deep Queries尚不支持。

为什么不能这样:

/// Find all blue cars and get their owners
Cars.find({color:'blue'}).populate('owners').exec(function(err, bluecars) {

  // unique list of owners
  var owners = _.uniq(bluecars, function(el) {
    return el.owner.id;
  });

  // get all complete owners, with pets + cars
  async.map(
    owners,
    function(cb) {
      Owners.findOne({id: el.id})
        .populate('pets')
        .populate('cars')
        .exec(function(err, data) {
        cb(err, data);
      }
    },
    function(err, results) {
      // this is now a collection of all owners that have blue cars
      // from this you can see all their pets
      console.log(results);
    });
});

是的,你正在拨打很多电话给DB,但它非常简单明了。

一旦性能成为问题,并且希望Owners,Cars& Pets都在同一个数据库中,您可以使用连接编写自己的查询。