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
});
});