質量(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~
Reference
この問題について(質量(1)), 我々は、より多くの情報をここで見つけました https://velog.io/@dlwpwns/시퀄라이즈-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol