Sequelize | Node.js,在两个数字之间搜索

问题描述 投票:0回答:1

我正在使用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 pricesconst prices2是两个输入,用户可以输入最低和最高价格。

在我的Sequelize模型中,我有“出租”列(用于出租,价格为INTEGER)。似乎一切正常,但问题是我得到price和prices2之间的“ 50”和“ 200”。 (例如,如果即时搜索在50到200之间)。enter image for example这给了我空结果或不同数字的错误结果。我注意到是否将数字放在price和price2旁边,例如,我会写:出租:{[介于[Op.between]:[50,200]}},我会得到正确的结果。 50和200(不含”)enter image for example很好但这只是我自己定义的数字。

任何人都可以帮助我找到一种解决方案,如何使用这两个输入(prices和prices2)获得正确的结果?

node.js search sequelize.js
1个回答
0
投票

我认为您应该在查询中将pricesprices2转换为INTEGER,然后才能更新代码

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

因为当您输入'50'时,'250'无法匹配它并返回错误的答案。

© www.soinside.com 2019 - 2024. All rights reserved.