我使用 sequelize 作为节点和 mysql 数据库的 ORM。现在我想根据部分值从表中获取所有项目。示例:我寻找 Guitar 它应该返回:Guitars、Guitar Red 6 弦等...
const getGuitarsName = async name => {
let rslts= undefined
try {
results = await db.Guitars.findAll({
where: {
name
}
})
} catch(err) {
return {success: false}
}
return {success: true, rslts}
}
同样在路由器上我有类似的东西:
router.get('/guitar/:gitName', async (req, res) => {
const gitName = req.params.gitName
const data = await guitarService.getSingleName(gitName)
if(!data.success) return responses.throwError(res)
return responses.throwSuccess(res, data.results)
})
所以如果我使用像 localhost/guitar/Guitar Red 6 Strings 这样的路由我得到了结果,但是如果我尝试使用 localhost/guitar/Guitar 我得到了 {"message":"Success","data":[]}
您可以使用LIKE
关键字匹配与您传递的字符串类似的字符串,其中包含以下键字符:
_
表示那里的任何字符%
表示那里有任何 1 个或多个字符因此,您正在寻找这样的东西
results = await db.Guitars.findAll({
where: {
name: {
[Op.like]: 'Guitar%'
}
}
})
此外,如果您使用的是 PostgreSQL,则可以使用与 相同的ILIKE
( [Op.ilike]
) 运算符,只是LIKE
不区分大小写。请参阅:http : //docs.sequelizejs.com/manual/querying.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句