bookshelf js - 如何通过匹配相关记录的标准来查询记录?

时间:2018-01-30 13:57:43

标签: node.js associations bookshelf.js

我们说我有一个书架一对多关系Person =>汽车,

伪代码

# Person

hasMany: cars
id
name

# Car
belongsTo: person
id
make

现在我想找到所有拥有“罗孚”的人。

我天真地希望的是这样的东西,显然不起作用:

Person.query({ where: { cars: { make: 'Rover' } } } )

2 个答案:

答案 0 :(得分:2)

看起来没有真正优雅的解决方案。我通过使用连接最终解决了我的问题。

看起来像这样:

Person.query((qb) => {
  qb.join('cars', 'cars.person_id', 'person.id');
  // no that the cars are joined,
  // they are available for querying
  qb.where({'cars.make': 'Rover'});
})
.then((result) => {
  // do stuff
})
.catch((err) => {
  // always catch errors
  console.error(err);
});

当你想要查询与数据透视/中间表的多对多关系的对应物时,它会变得有点复杂,但这可能有助于开始。

答案 1 :(得分:0)

您需要使用# Bitnami applications installed in a Virtual Host Include "/opt/bitnami/apache2/conf/extra/httpd-vhosts.conf" 选项来获取相关模型。试试这个,

withRelated

来自文档here

的更多信息