Sequelize | Node.js, поиск между двумя числами - PullRequest
0 голосов
/ 19 января 2020

Я работаю над расширенным поиском с несколькими опциями с Sequelize и Node.js. Один из вариантов - между двумя ценами.

  const search2 = req.body.search2;
  const title = req.body.title;
  const price = req.body.price;
  const prices = req.body.prices;
  const prices2 = req.body.prices2;
  const address = req.body.address;

Product.findAll({
    where: { [Op.and]:
 { price: { [Op.like]: '%' + price + '%' },
 category: { [Op.like]: '%' + title + '%' },
 description: { [Op.like]: '%' + search2 + '%' },
 Renting: { [Op.between]: [prices, prices2] },
 address: { [Op.like]: '%' + address + '%' } } }
    , order: [['createdAt', 'DESC']], limit, offset
  })

const prices и const prices2 - это два входа, в которые пользователь может записать минимальную и максимальную цену.

В моей модели Sequelize I есть столбец «Аренда» (для цены аренды, его INTEGER). кажется, что все работает нормально, но проблема в том, что я получаю между ценами и ценами2 '50' И '200'. (например, если я ищу от 50 до 200). введите изображение, например , которое дает мне пустые или неправильные результаты для разных чисел. Я заметил, что если я поставлю числа рядом с ценами и ценами2, например, напишу: Аренда: {[Op.between]: [50, 200]}, я получу правильные результаты. 50 И 200 (без '') введите изображение, например , что хорошо. Но это просто, если я сам определил числа.

Может кто-нибудь помочь мне найти решение, как получить правильный результат, используя эти два входа (цены и цены2)?

1 Ответ

0 голосов
/ 19 января 2020

Я думаю, вам следует преобразовать prices и prices2 в INTEGER, прежде чем использовать его в запросе, и вы можете обновить свой код

Renting: { [Op.between]: (+prices, +prices2) },

, потому что когда вы вводите «50», «250» может не соответствует и верните неправильный ответ.

...