오류상황1
const existUsers = await User.findAll({
where: {
[Op.or]: [{ nickname }],
},
});
Error: Invalid value { nickname: 'aaa111' }
문자열을 전달하는 것이 아니라 객체를 전달해서 발생
해결
const existsUsers = await User.findAll({where:{ nickname: nickname}});
데이터를 넣을려는 상황에서
sqlMessage: "Unknown column 'postId' in 'field list'",
sql: 'INSERT INTO `Posts` (`postId`,`content`,`createdAt`,`updatedAt`) VALUES (?,?,?,?);',
parameters: [ null, '내용입력1', '2022-12-23 06:23:59', '2022-12-23 06:23:59' ]
왜 postId null이지 했는데 dbeaver들어가보니 postId가 아닌 id로 되어있었음
table 지우고
migration수정하고
npx sequelize db:migrate
에러
No migrations were executed, database schema was already up to date.
migration의 내용을 수정하기 위해서는 sequelize db:migrate:undo 명령어를 실행해서 "되돌리기"를 해야합니다
해결함...
models 에서
belongsTo 넣어주고
static associate(models) {
models.Comment.belongsTo(models.Post,{foreignKey:"postId",targetKey: "postId"});
models.Comment.belongsTo(models.User,{foreignKey:"userId",targetKey: "userId"});
}
hasMany
static associate(models) {
models.User.hasMany(models.comment,{foreignKey:"userId",sourceKey:"userId"});
}
안들어감 구글링 열심히 한 결과
migration file 하나 생성
npx sequelize migration:generate --name fk-comment
module.exports = {
async up (queryInterface, Sequelize) {
await queryInterface.addColumn("Comments", "userId", {
type: Sequelize.INTEGER,
});
await queryInterface.addConstraint("Comments", {
fields: ["userId"],
type: "foreign key",
name: "users_comments_id_fk",
references: {
table: "Users",
field: "userId",
},
onDelete: "cascade",
onUpdate: "cascade",
});
},
async down (queryInterface, Sequelize) {
await queryInterface.removeColumn("Comments", "userId");
}
comment에 userId라는 외래키 컬럼이 생김
comment 와 user 테이블이 연결이 되었다.