0

如何LIKE在 typeormfind查询中使用第二个?我尝试如下,但不起作用并且总是返回空数组

        return await this.conn.getRepository(Article).find({
            where: {
                body: Like(`%${query}%`),
                //title: Like(`%${query}%`), //NOT WORK WITH SECOND
            },
            order: {
                lastUpdate: 'DESC'
            },
            relations: ['author']
        }); 

谢谢你的帮助!

4

1 回答 1

1

我必须对您的数据和用例做出很多假设。

我怀疑您遇到的问题与 TypeORM 针对您的where条件生成的布尔运算有关。

根据您指定请求的方式,生成的布尔运算是AND. body这意味着只有在ANDtitle都包含搜索字符串时才会返回 TRUE 。

我怀疑这不是你想要的。我假设您真正想要的是where返回 TRUE 如果bodytitle 两者都包含搜索字符串。

如果我所有的假设都是正确的,那么您应该能够通过将您的请求更改为以下内容来获得您想要的结果:

return await this.conn.getRepository(Article).find({
    where: [
        {body: Like(`%${query}%`)},
        {title: Like(`%${query}%`)} 
    ],
    order: {
        lastUpdate: 'DESC'
    },
    relations: ['author']
}); 

使用这种形式的请求应该导致在两个测试之间where使用运算符的子句。ORLike

于 2021-03-03T22:31:05.990 回答