【发布时间】: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