如何根据值的一部分从表中获取数据?

青少年

我使用 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章