3월 20일 (일) sequelize 테이블 추가 생성 및 테이블 연결, 구현 해야할 내용
Posts
npx sequelize-cli model:generate --name Posts --attributes user_id:integer,message:text,total_comments:integer
foreignkey 연결
Posts.belongsTo(models.Users, { foreignKey: { name: "user_id", allowNull: false }, onDelete: "CASCADE" });
특정 유저가 쓴 글을 Posts테이블에 저장한다
Posts_comments
npx sequelize-cli model:generate --name Posts_comments --attributes user_id:integer,post_id:integer,comment:text
foreignkey 연결
Posts_comments.belongsTo(models.Users, { foreignKey: { name: "user_id", allowNull: false }, onDelete: "CASCADE" });
Posts_comments.belongsTo(models.Posts, { foreignKey: { name: "post_id", allowNull: false }, onDelete: "CASCADE" });
특정 유저가 쓴 댓글을 Posts_comments 테이블에 저장한다,
같은 post_id의 갯수를 세어 Posts 테블의 total_comments에 전달하여 저장한다
sequelize 테이블 연결
- hasMany : 1:N, 여러개를 가질 수 있다.(제공하면 이녀석)
- belongsTo : 1:1 하나만 가질 수 있다.(참조하면 이녀석)
- targetKey : 정의되어있지 않다면 기본값으로 user 모델의 주요 키를 가리킨다
Users : Posts = 일 : 다
models/Users
static associate(models) { Users.hasMany(models.Posts, { foreignKey: "user_id" }) }
models/Posts
static associate(models) { Posts.belongsTo(models.Users, { foreignKey: { name: "user_id", allowNull: false }, onDelete: "CASCADE" }); }
적용
const postsData = await Posts.findAll({
attributes: [
"id",
"user_id",
"message",
"total_comments",
],
include: [
{ model: Users, attributes: ["id"] }
]
attributes로 찾고 include로 연결
attributes, include, where
include - 하위 테이블 조인
attributes - 해당 테이블에서 조회 하려는 컬럼 배열
attributes
일부 특성만을 select하려면 attributes 옵션을 사용하면된다
where
- where 객체를 사용하여 쿼리 내용을 필터링할 수 있다
- where은 attribute: 값 의 쌍으로 이루어진 객체이며, 값 으로는 비교 연산의 경우 기본 자료형의 값, 그 외의 연산자의 경우 또다른 객체가 올 수 있다
include
include는 어떤 컬럼을 포함할지를 제한해주는 옵션
Author And Source
이 문제에 관하여(3월 20일 (일) sequelize 테이블 추가 생성 및 테이블 연결, 구현 해야할 내용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@southbig89/3월-20일-일-sequelize-테이블-추가-생성-및-테이블-연결-구현-해야할-내용저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)