-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
안녕하세요. !! 제로초님 개인 프로젝트 만들고 있는데요.
20.10.29 13:21 작성 조회수 212
0
여기서 왜 addCategorys가 존재하지 않는 함수라고 하는지 알 수 있을까요??
addCategory라고 했을때도 똑같아용.
답변을 작성해보세요.
1
조현영
지식공유자2020.10.29
쿼리를 세 번 날려서 좋지 않을 것 같습니다. findOrCreate할 때 이미 return값에 Category 정보(아이디까지)가 들어있어서 다시 findOne할 필요는 없습니다.
0
송지훈
질문자2020.10.29
modelName: 'User',
tableName: 'users',
modelName: 'Category',
tableName: 'categorys',
되어있습니당.
일단은 add메서드 안쓰고 진행하는데 문제는 없는 프로젝트라
add가 필요한 상황에서는 말씀하신대로 진행해야 겟네요.
고마워요.!!
0
조현영
지식공유자2020.10.29
db.Post.belongsTo(db.Category, { as: 'Category' }) 이렇게 쓰는 임시방편이 있을 수 있겠습니다.
User랑 Category 모델들의 ModelName, tableName은 제대로 되어있죠?
0
송지훈
질문자2020.10.29
model/post.js
const DataTypes = require('sequelize');
const { Model } = DataTypes;
module.exports = class Post extends Model {
static init(sequelize) {
return super.init(
{
title: {
type: DataTypes.STRING(10),
allowNull: false,
},
content: {
type: DataTypes.TEXT,
allowNull: false,
},
},
{
modelName: 'Post',
tableName: 'posts',
charset: 'utf8mb4',
collate: 'utf8mb4_general_ci',
sequelize,
},
);
}
static associate(db) {
db.Post.belongsTo(db.User);
db.Post.belongsTo(db.Category);
}
};
model/index.js
const Sequelize = require('sequelize');
const category = require('./category');
const post = require('./post');
const user = require('./user');
const env = process.env.NODE_ENV || 'development';
const config = require('../config/config')[env];
const db = {};
const sequelize = new Sequelize(
config.database,
config.username,
config.password,
config,
);
db.Category = category;
db.Post = post;
db.User = user;
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;
router/post.js
const { Post, Category, User } = require('../models');
이렇게 하였습니다.
0
0
송지훈
질문자2020.10.29
await newPost.addUser(req.user.id);
이렇게 해보았는데 이것도 마찬가지로 is not a function 이라고 나와용.
죄송합니다. 감사합니다. ㅠㅠ
0
조현영
지식공유자2020.10.29
아, 생각해보니 post는 하나의 category에만 속해서 addCategory가 맞습니다. addCategory가 없다면 addUser도 없는지 한 번 확인해보세요.
0
0
송지훈
질문자2020.10.29
await Category.findOrCreate({
where: { name: category },
});
const findCategory = await Category.findOne({
where: { name: category },
});
const newPost = await Post.create({
title,
content,
UserId: req.user.id,
CategoryId: findCategory.id,
});
아 복수형이 자동 적용 되는군요. 정말 감사합니다.
일단 이렇게 했는데
이런 코드는 안티패턴인가요??
0
답변 10