【问题标题】:Query across two tables in sequelize在 sequelize 中跨两个表查询
【发布时间】:2021-10-11 17:28:51
【问题描述】:

我对 sequelize 和 mySQL 还是很陌生,感觉我已经尝试了所有方法,以便将搜索词('查询')传递给 books 表(搜索标题)和 authors 表(搜索 first_name 或 last_name )。如果匹配任何这些值子字符串,则将整本书和作者信息作为 JSON 对象返回。当我只将查询集中在书名上时,它返回的一切都很好。当我尝试传入作者列时,问题就出现了。我尝试了别名,嵌套 where 子句,我能想到的所有事情,我在这里或网上遇到的任何事情似乎都无法帮助我解决这个问题。

search: (req, res) => {
    const { query } = req.query;
    Book.findAll({
      include: [Author],
      where: {
        [Op.or]: [
            { title: { [Op.substring]: query } },
        ]},
    })
      .then((Book) => res.json(Book))
      .catch((err) => {
        console.log(err);
        res.status(500).json(err);
      });
  },

这是工作代码。在 where 子句中,我想做 { first_name: { [Op.substring]: query } }, 例如,但它没有访问 Author 表。在包含语句中,我尝试了别名并在 where 子句中调用它,但这会引发别名错误,说我已经声明了别名(作者)但是当我尝试将其用作 { 'Author.first_name' { [Op.substring]: query } }, 时,它返回没有书.Author.first_name。

我可能遗漏了一些简单的东西,所以任何可以提供帮助的人,让我知道我在这里做错了什么!

【问题讨论】:

    标签: mysql sequelize.js


    【解决方案1】:

    解决了,而且非常简单。我错过了访问单独表的语法,即“$Author.first_name$”。

    【讨论】:

      猜你喜欢
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 2016-05-08
      • 2016-07-27
      • 2016-09-30
      • 1970-01-01
      • 2017-11-30
      相关资源
      最近更新 更多