Sequelize에서 모델 연결을 만드는 방법 - JS/Node JS 표현

Node JS 작업 초기에 이 문제에 직면한 경우. Sequelize는 MySQL을 위한 훌륭한 ORM을 제공하지만 모델 내의 연결은 약간 까다롭습니다. 협회에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

더 진행하기 전에 전체 기능 코드 설정을 위한 설정을 받으려는 경우here it is

이해를 돕기 위해 모델 디렉토리 내에 있는 두 개의 모델(models/author.js 및 models/post.js)을 고려해 보겠습니다. 모델은 각각 다음과 같습니다.

작성자 모델

'use strict';
const {
  Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
  class Author extends Model {
    /**
     * Helper method for defining associations.
     * This method is not a part of Sequelize lifecycle.
     * The `models/index` file will call this method automatically.
     */
    static associate(models) {
      // define association here
    }
  };

  Author.init({
    slug: DataTypes.STRING,
    name: DataTypes.STRING,
  }, {
    sequelize,
    modelName: 'Author',
    tableName: 'authors',
  });


  return Author;
};


포스트 모델

'use strict';
const {
    Model,
} = require('sequelize');

module.exports = (sequelize, DataTypes) => {
    class Post extends Model {
        /**
         * Helper method for defining associations.
         * This method is not a part of Sequelize lifecycle.
         * The `models/index` file will call this method automatically.
         */
        static associate(models) {
            this.belongsTo(models.Author, {as: 'Author'});
        }
    }


    Post.init({
        slug: DataTypes.STRING,
        title: DataTypes.STRING,
        excerpt: DataTypes.STRING
    }, {
        sequelize,
        modelName: 'Post',
        tableName: 'posts',
    });

    return Post;
};


게시물 모델에서 볼 수 있듯이 게시물과 작성자 간에 소속 관계가 만들어집니다. 그러나 의견에서 알 수 있듯이 연결 방법은 Sequelize 수명 주기의 일부가 아닙니다. 수동으로 호출해야 합니다.

이를 달성하려면 다음 내용으로 *models/index.js를 생성해야 합니다.

index.js

const Sequelize = require("sequelize");
/**
* Database Connection.
**/
const {sequelize, DataTypes} = require('../config/connection')

const Post = require("../models/post")(sequelize, DataTypes);
const Author = require("../models/author")(sequelize, DataTypes);

const models = {
    Post,
    Author
};

// Run `.associate` if it exists,
// ie create relationships in the ORM
Object.values(models)
    .filter(model => typeof model.associate === "function")
    .forEach(model => model.associate(models));

const db = {
    ...models,
    sequelize
};

module.exports = db;


이 작업을 완료한 모델은 models/index.js를 통해 모든 모델에 액세스할 수 있습니다.

const {Post, Author} = require('../../models');


여기에서 데이터에 액세스할 때 연결을 사용하는 괭이에 대해 자세히 알아볼 수 있습니다.

above code용 GitHub 저장소

아래는 동일한 비디오 자습서에 대한 링크입니다.

좋은 웹페이지 즐겨찾기