如何在ORM(sequelizejs)查询上添加条件检查?

时间:2018-10-13 13:55:02

标签: javascript express sequelize.js

假设我有一个表 gameData {gameId,currentBoardLayout} ,将诸如www.chess.com/ asd123 之类的获取请求发送到服务器,其中asd123是我的游戏ID,我需要捕获此ID(asd123,这是我的gameId)并在我的表(gameData)中进行检查,并实现以下逻辑:

srv.get('/:id', (req, res) => {
    if ( gameData.findAll({where: {gameId: req.params.id} )
            { // Game room found
                return currentBoardLayout
            }
    else
            { error : Invalid game id }
    })

我该如何实现? 谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用Sequelize的findById方法。

srv.get('/:id', (req, res) => {
  gameData.findById(req.params.id)
    .then(result => {
      res.send(result)
    })
    .catch(() => {
      res.send({
        error: 'Could not find ID'
      })
    })
})

这是正在发生的事情:

  1. Sequelize的findById方法将返回一个Promise。如果成功,您将从数据库中取回您的项目。如果找不到该项目,则将触发catch方法。

  2. res.send是Express的将数据发送回客户端的方式。

值得检查Sequelize文档: