如何解决使用 Mikro-orm 查询连接
我正在尝试获取 Author
的详细信息,以便他/她的图书类别为“科学”并且价格 > 20 或页数 > 300。
*Author*
id
name
country
books
*Book*
id
name
category
price
edition
pages
author_id
查询如下:
authorRepository.find(filter,{})
和 filter
为:
{
"books": {
"$and": [{
"category": {
"$eq": "Science"
}
},{
"$or": [{
"price": { $eq: 20 }
},{
"pages": { $gt: 300 }
}
]
}
]
}
}
select "e0"."*" from "author" as "e0" left join "book" as "e1" on "e0"."id" = "e1"."author_id"
where "e1"."category" = 'Science' and ("e0"."price" = 20 or "e0"."pages" > 300)
不确定为什么嵌套 $or
条件应用于 e0
(Author
) 而不是 e1
(Book
)。
解决方法
看起来像一个错误,但我相信当您将组操作员移到顶级时它应该可以正常工作。您不需要使用 $and
,因为它是隐式的,以及 $eq
,因此简化版本可能如下所示:
const filter = {
books: { category: 'Science' },$or: [
{ books: { price: 20 } },{ books: { pages: { $gt: 300 } } },],};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。