续集findByPk返回null

时间:2019-10-18 01:58:55

标签: sequelize.js

我想通过他/她的ID查找用户。我使用了sequelize findByPk(),响应返回为空,而我使用findAll()获得了所有数据。这样就可以与数据库建立连接。

controllers.js

module.exports = {
    findAll: function(req, res) {
        User.findAll()
        .then(user => {
            res.json(user);
        })
        .catch((err) => res.status(422).json(err));
    },
    findByPk: function(req, res) {
        User.findByPk(req.params.id)
        .then(user => {
            res.json(user)
        })
        .catch((err) => console.log(err));
    }
};


routes.js

router.get('/all', userController.findAll);
router.get('/oneUser', userController.findByPk);

1 个答案:

答案 0 :(得分:1)

您确定req.params.id包含有效的PK吗?如果您使用硬编码值(例如)进行测试,findByPk是否有效? User.findByPk(1).then....吗?

如果没有别的,您可以使用where子句,因此您无需进行迭代:

findByPk: function(req, res) {
   User.findAll({where : {id : req.params.id }})  /* assumes pk is 'id' field */
   .then(user => {
      res.json(user)
   })
.catch((err) => console.log(err));
}