인프런 커뮤니티 질문&답변
질문있습니다.
작성
·
240
답변 6
0
0
0
원피스를 찾아서
질문자
cannot read property 'addLikers' of null 동일하게 에러가 발생합니다.
//수정
static associate(db) { db.Post.belongsToMany(db.User, { through: 'Like', as: 'Likers',onDelete: 'cascade' }) // }
몇시간동안 보고있는데 어떤걸 봐야할지도 모르겠습니다.
애초에 테이블생성될때 잘못된건지...
어떨때 저 에러가 나는지 말씀해주시면 거기 위주로 한번보겠습니다.!!
0
0
원피스를 찾아서
질문자
// post .js
const DataTypes = require('sequelize');
const { Model } = DataTypes;
module.exports = class Post extends Model {
static init(sequelize) {
return super.init({
// id가 기본적으로 들어있다.
content: {
type: DataTypes.TEXT,
allowNull: false,
},
// RetweetId
}, {
modelName: 'Post',
tableName: 'posts',
charset: 'utf8mb4',
collate: 'utf8mb4_general_ci', // 이모티콘 저장
sequelize,
});
}
static associate(db) {
db.Post.belongsToMany(db.User, { through: 'Like', as: 'Liker',onDelete: 'cascade' }) // post.addLikers, post.removeLikers
}
};
//. user.js
const DataTypes = require('sequelize');
const { Model } = DataTypes;
module.exports = class User extends Model {
static init(sequelize) {
return super.init({
// id가 기본적으로 들어있다.
username:{
type: DataTypes.STRING(30),
allowNull: false,
},
nickname: {
type: DataTypes.STRING(30),
},
email: {
type: DataTypes.STRING(60), //
allowNull: false, // 필수
unique: true, // 고유한 값
},
password: {
type: DataTypes.STRING(200),
},
avatar: {
type: DataTypes.TEXT,
},
snsId: {
type: DataTypes.STRING(60)
},
provider: {
type: DataTypes.STRING(60)
}
},
{
modelName: 'User',
tableName: 'users',
charset: 'utf8',
collate: 'utf8_general_ci', // 한글 저장
sequelize,
});
}
static associate(db) {
db.User.belongsToMany(db.Post, {through: 'Like', as:"Liked", onDelete: 'cascade'});
}
};
// index.js
'use strict';
const Sequelize = require('sequelize');
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.js')[env];
const user = require('./user');
const post = require('./post');
const db = {};
let sequelize;
if (config.use_env_variable) {
sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
sequelize = new Sequelize(config.database, config.username, config.password, config);
}
// fs
// .readdirSync(__dirname)
// .filter(file => {
// return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
// })
// .forEach(file => {
// const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
// db[model.name] = model;
// });
db.User = user;
db.Post = post;
Object.keys(db).forEach(modelName => {
db[modelName].init(sequelize);
});
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
// routes xxx.js
// 연습으로 하는거라 양해부탁해요!!
Post.findOne({
where: { content: 1 }
})
.then((res) => {
res.addLikers(2)
}) // error
0
제로초(조현영)
지식공유자
먼저 addLiker로 한 번 바꿔보시고요. 그래도 안 된다면 models/user.js 코드에 문제가 있을 확률이 높습니다. models/index.js랑 models/user.js 올려주시면 됩니다.




