我想做一些事情,例如在猫鼬中可以做的事情:

Customers.find({
            $or: [
                {firstName: {$in: RegExpArray}},
                {lastName: {$in: RegExpArray}},
                {email: {$in: RegExpArray}}
            ]
        }).limit(50);


我试过了:

Customers.findAll({
            where: {
                $or: [
                    {firstName: {$iLike: {$in: RegExpArray}}},
                    {lastName: {$iLike: {$in: RegExpArray}}},
                    {email: {$iLike: {$in: RegExpArray}}}
                ]
            },
            limit: 50});


我也尝试使用$regex代替$iLike,或者传递数组[ '%someString%', '%someString%', '%someString%'...]代替RegExpArray应该起作用的东西,但是不起作用。是否可以在查询中使用正则表达式?

最佳答案

尝试以下方法:

let searchFor = [ '%someString%', '%someString%', '%someString%'...]

// basically turning the items into objects with "$iLike" as the key
searchFor = searchFor.map((item) => {
    return {$iLike: item};
});

Customer.findAll({
            where: {
                $or: [
                    {firstName: {$or: searchFor}},
                    {lastName: {$or: searchFor}},
                    {email: {$or: searchFor}}
                ]
            },
            order: [['createdAt', 'DESC']],
            limit: 50
        })

10-06 03:03