質量(1)


市場の質とは何ですか。



品質はORMライブラリであり、データベース操作を簡単に行うことができます.
ORMとは?オブジェクト-リレーションシップマッピングの略.
つまり、ORMはJavaScriptオブジェクトをリレーショナル・データベースに関連付けるツールです.

市場競争優位性


rawqueryの事実を書く必要はありません!!
トランザクションを再利用したり、グリッド間で容易に処理したりできます.->再利用とメンテナンスが容易!
DBMSへの依存性が減少した.

市場の質の欠点


検索エンジンよりショーが遅い…But. 一定の演技を維持したり、誤ったキャリアを乱射したりするよりも、シプレスが処理したほうがずっといい.
サービスが複雑であればあるほど、ORMは限られています.

品質の設定

$ npm install --save pg pg-hstore # Postgres
$ npm install --save mysql2
$ npm install --save mariadb
$ npm install --save sqlite3
$ npm install --save tedious # Microsoft SQL Server
それぞれが提供するRDBをインストールするだけです.(筆者はpostgresを使用)
詩の質とpostgresをつなぐ
// loaders/sequelize.js

const { Sequelize } = require('sequelize');
const dbConfig = require('../config/dbConfig');

const sequelize = new Sequelize(
    dbConfig.database,
    dbConfig.username,
    dbConfig.password,
    {
        host: dbConfig.host,
        dialect: 'postgres',
        logging: true
    }
);

module.exports = sequelize;
dbconfigでDBに関する情報を宣言してインポートして使用します!
データベーステーブルの接続
// models/index.js

const { Sequelize } = require('sequelize');
const sequelize = require('../loaders/sequelize');

const db = {
    Sequelize,
    sequelize,

    // table
    //ex)
    user,
    post
};

module.exports = db;
tableもあればtableを入力すればいいです.また、このファイルに外部キーまたは外部キーに関する情報を入力します.->hasmany、belongsTomany、belongsToなどのモジュール~~!
// loaders/connect.js

const db = require('../models');

const connectDB = async () => {
    try {
        await db.sequelize
            .authenticate()
            .then(async () => {
                console.log('Connection Success!');
            })
            .catch((e) => {
                console.log('error : ', e);
            });

        //db.sequelize.sync({ force: false }).then(() => console.log('Table created'));
    } catch (err) {
        console.error(err.message);
        process.exit(1);
    }
};

module.exports = connectDB;
このファイルもデータベースに接続するための作業です.ここで、コメントsyncは、データベース・テーブルを変更したり、カラムを変更したりするために使用されます.私たちが修正する必要はありません.西の品質からします.

市場の使用方法


デフォルトでは、品質はDBテーブルを作成し、コードを使用してクエリーします.

質量データベースの作成


Siqualizeはdefine()メソッドでDB作成を処理します.
// models/user

const user = sequelize.define(
  'user',
  {
    id: {
      type: DataTypes.INTEGER,
      autoIncrement: true,
      primaryKey: true,
    },
    nickname: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    ...
  },
  {
    sequelize,
    modelName: 'user',
    freezeTableName: true,
    underscored: true,
    charset: 'utf8',
    collate: 'utf8_general_ci',
    timestamps: true,
    paranoid: true,
    
  }
ユーザー・テーブルの部分をdefine()で定義します.次は表の必要条件や設定欄の部分です!
要求に適合するDataType
DataTypes.STRING  // 문자열 
DataTypes.TEXT    // 텍스트
DataTypes.BOOLEAN // 논리형
DataTypes.INTEGER // 정수형
DataTypes.FLOAT   // 실수형
...etc
品質オプション
modelName: 'TABLE_NAME' // 테이블 이름 정의
freezeTableName: true // 테이블 이름과 모델이름 동일하게 사용
underscored: true   // 테이블 이름 Camel -> Snack Casc 변경
charset: 'utf-8' 
collate: 'utf_general_ci // 위 charset과 함께 한국어를 저장할 수 있도록 설정
titmestamps: true  // createdAt, updatedAt 자동 추가.
paranodi: true    // deletedAt 자동생성 밑 삭제 때 soft delete시 용이
このようにオプションとDBテーブルを設定すると!コツコツ~そしてDBを生成!(DBが既に存在する場合は、DBのテーブル名も外部キーも同じに設定する必要があります!)

西品質外部キーの設定

// models/index.js

/*
User-Post 일대다 관계 (유저는 여러 개의 여행 후기를 작성할 수 있다.)
 */
user.hasMany(post, {
    sourceKey: 'id',
    foreignKey: 'user_id',
    as: 'posts'
});

post.belongsTo(user, {
    onDelete: 'CASCADE',
    targetKey: 'id',
    foreignKey: 'user_id'
});
デフォルトでは、各テーブルにprimaryKeyを設定する必要があります.
hasMany:1対N関係で1のDB TABLEとして機能する
belongsTo:1対N関係でN役を演じるDB TABLE
いずれも双方向に設定します.これにより,西品質がpkで接続されていることが認識される.
ではN比Mは?!!!
/*
User-Post 다대다 관계 (각 유저는 여러 개의 여행 후기를 스크랩할 수 있다.)
 */
user.belongsToMany(post, {
    through: scrap,
    foreignKey: 'user_id',
});

post.belongsToMany(user, {
    through: scrap,
    foreignKey: 'post_id',
    hooks: true
});
上のように、belongsToManyの方法で設定すればいいです.双方向接続も必要です実は、廃品という表を使うために、公式ファイルでは上のbelongsToMantを設定するだけでいいと言われていますが、双方向接続が必要です!!!
次のテーマは、西クオリティの使い方とMVCモードを適用したNode~