Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sails策略-搜索关联_Javascript_Node.js_Mongodb_Sails.js_Waterline - Fatal编程技术网

Javascript Sails策略-搜索关联

Javascript Sails策略-搜索关联,javascript,node.js,mongodb,sails.js,waterline,Javascript,Node.js,Mongodb,Sails.js,Waterline,假设我有一个模型用户,它可以有多个房屋。这些房子可以有多个停车位,然后可以有多辆汽车或自行车 用户>房屋>停车位>[汽车、自行车] 如何检查汽车是否与用户相关? 比方说,当一个用户(当前登录的用户)想要编辑或删除一辆车时,我想检查他是否是那辆车的车主。当他想在房子或停车场上表演动作时,情况也是如此 既然模型用户与模型车或停车位没有直接关联,那么检查对象是否与用户相关的最佳方法是什么有没有办法查找“一级关联”? 提前谢谢 Dennis如果汽车或自行车只能由一个用户拥有,您可以在汽车中添加一个用户I

假设我有一个模型用户,它可以有多个房屋。这些房子可以有多个停车位,然后可以有多辆汽车自行车

用户>房屋>停车位>[汽车、自行车]

如何检查汽车是否与用户相关?

比方说,当一个用户(当前登录的用户)想要编辑或删除一辆车时,我想检查他是否是那辆车的车主。当他想在房子或停车场上表演动作时,情况也是如此

既然模型用户与模型车或停车位没有直接关联,那么检查对象是否与用户相关的最佳方法是什么有没有办法查找“一级关联”?

提前谢谢


Dennis

如果汽车或自行车只能由一个用户拥有,您可以在汽车中添加一个用户ID关联模型,然后从那里开始工作,或者您可以使用大量子查询执行硬SQL查询,例如:

"SELECT car.name, car.id, car.parkingspot FROM cars, parkingspots, houses, users WHERE
    car.parkingspotID = parkingspot.ID
    AND
    parkingspot.houseID = house.ID
    AND
    house.userID = MY_USERID
"

我想你在模型中定义了所有这些

然后您就可以找到与汽车相关的用户:

  • 从车上取回停车场
  • 当你有了停车场,找回房子
  • 当你拥有房子时,你可以找回用户
下面是一个使用回调的简单示例:

Car.findOne({id: 1}).exec(function(err, car) {
  Parking.findOne({id: car.parking}).exec(function(err, parking) {
    House.findOne({id: parking.house}).exec(function(err, house) {
      res.json(house.user); // <= returns the user id
    });
  });
});
您还可以使用promise API以不同的方式组织异步代码

Car.findOne({id: 1}).populate('parking').exec(function(err, car) {
  House.findOne({id: car.parking.house}).populate('user').exec(function(err, house) {
    res.json(house.user); // returns the user object
  });
});