SequelizeDatabaseError:列“”不存在

时间:2019-04-18 22:51:29

标签: postgresql express sequelize.js

我正在尝试让用户喜欢一个帖子,我收到此错误

  

未处理的拒绝SequelizeDatabaseError:“ UserId”列不   存在

我知道UserId 确实存在,因为他们是这样的数据库中的用户。

enter image description here

我不确定是否正确设置了迁移和模型。我避免使用关联会导致它们非常复杂地掌握一段时间。我想要的只是将一个赞与一个帖子相关联,并且能够检索喜欢的计数。是主要目标。

模型/喜欢

'use strict';
module.exports = function(sequelize, DataTypes) {
  const Like = sequelize.define('Likes', {
    like:{
      type:DataTypes.BOOLEAN,
      allowNull:true
    }
  }, {});
    Like.associate = function(models) {

        Like.belongsTo(models.User, {
          onDelete: "CASCADE",
          foreignKey: {
            foreignKey: 'userId'
          }
        })

        Like.belongsTo(models.Post, {
          onDelete: "CASCADE",
          foreignKey: {
            foreignKey: 'likeId'
          }
        })

    }


  return Like;
}

;

模型/帖子

module.exports = (sequelize, DataTypes) => {
  const Post = sequelize.define('Post', {
    title: DataTypes.STRING,
    post_content: DataTypes.STRING,
    username:  DataTypes.STRING
  }, {});
  Post.associate = function(models) {
    Post.belongsTo(models.User, {  foreignKey: 'userId',  targetKey: 'id' });
    Post.hasMany(models.Likes, {  foreignKey: 'likeId',  targetKey: 'id' });
  };
  return Post;
};

模型/用户

'use strict';

const User = (sequelize, DataTypes) => {
  const myUser = sequelize.define('User', {
    username: DataTypes.STRING,
    email: DataTypes.STRING,
    password: DataTypes.STRING,
    resetPasswordToken:DataTypes.STRING,
    resetPasswordExpires: DataTypes.DATE
  }, {});

  myUser.associate = function(models) {

    myUser.hasMany(models.Post, { foreignKey: 'userId', as:'users' });
    myUser.hasMany(models.Likes, { foreignKey: 'userId', as:'likes' });
  };

  return myUser;
};

module.exports = User;

路线/帖子

router.post('/like/:id', (req, res)=> {
    models.Post.findOne({
      where:{
          id: req.params.id
      }
    }).then( (like) => {
        if(like){
            models.Likes.findOrCreate({
                where:{
                    postId: req.params.id
                },
                defaults:{
                    like:true
                }
            }).then( (result) => {
                res.status(200).send({
                    message: 'You have like this post',
                    like: result
                })
            })
        }
    }).catch( (err) => {
        res.status(401).send({
            message: "Something went wrong",
            err: err
        })
    })

})

0 个答案:

没有答案