sequelizejs,使用RegEx查询

时间:2016-10-03 19:32:53

标签: javascript sql mongoose sequelize.js

我想做点什么,比如我在Mongoose可以做的事情:

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应该起作用的内容,但这种情况并非如此。是否可以在查询中使用正则表达式?

1 个答案:

答案 0 :(得分:3)

请改为尝试:

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
        })