2016-10-18 2 views
0

Это условный запрос. Так вот почему код начинается с:Sequelize добавление дополнительных котировок в LIKE

var where = []; 

Затем я всегда ставлю идентификатор для поиска:

where.push({myId: myId}); 

я затем проверить, если выполнены условия, и в этом случае добавить LIKE:

if(req.query.search !== undefined && req.query.search != ''){ 
where.push({name: {$like: req.query.search}}); 
} 

при взгляде на сгенерированный запрос я вижу:

SELECT "id", "name" FROM "MyTable" WHERE ("MyTable"."myId" = 1 AND "MyTable"."name" LIKE '''%''ABCD''%'''); 

Как вы можете видеть, много кавычек добавлено.

Если я вручную удалю все кавычки, кроме первого и последнего, то запрос выполняется хорошо.

Почему добавляется все эти цитаты? Я использую оператор LIKE неправильно?

+1

Отметьте мой ответ – Mouneer

ответ

0

Плохо. Я изменил $, как на подобные, и все цитаты исчезли.

0

Недавно я столкнулся с этим делом и не нашел проблем. Оба like и $like не работал в моем случае. И после некоторых испытаний это работает:

model.findAll({ 
    where: Sequelize.where(Sequelize.col('columnName'), { 
    like: `%${string}%`, 
    }), 
})