sequrize splitt問題による理解
7859 ワード
スプライン問題基本的に開発、テスト、生産環境でどのような環境を使用しますか? デフォルトでは、開発環境が使用されています.
models/index.jsでは対応するコードで確認できます.
env変数を使用してconfigのjosonを現在の位置から取得し、パラメータ化設定の変数値のオブジェクトを使用します.はどのように他の環境に切り替えますか?
process.env.NODE ENVは環境転換をサポートする
以上の環境が分かれているのですか? 環境ごとに用途が異なるため、1つの環境では3種類(dev、test、pro)
仕事をすれば混乱をもたらす.(可読性・保守困難)分離
管理する.
開発には基本スケルトンを作成する開発環境が必要です.
テストでは、データの追加削除など複数の操作が必要です.
導入にはユーザーデータが格納されており、勝手にテストすることはできません.(オプション)設定ファイルは次のとおりです.gitignoreに登録されています.プロファイルをGitで管理するのではなく、環境変数を使用できますか? かもしれません.
環境変数を利用できます.
でも今どうすればいいのか、
まず構成します.jsonファイルをjsファイルに置き換えます.
(jsonファイルはjs構文が無効な環境の「変数」なのでjsファイルに置き換える必要があります)
node環境で環境変数にアクセスするにはdotnvモジュールが必要です
だからjsファイルのconfigに変えますjsからdotnvモジュールを読み込む
適切な修正が必要
MySQLのvarcharまたはintタイプSequeizeで定義すべきタイプは?
int->整数の使用
varchar->文字列として使用
Sequelizeのデータ型の定義方法は異なります.
データ型は、次のようにオブジェクト内部でkey値とvalue値として定義されます.
なぜSequelizeのタイプ定義とMySQLのタイプ定義が違うのですか?
Sequelizeは、複数のリレーショナル・データベース・システムを互換化するために使用されます.
共通の文法に統一されているからです.
移行時に注意すべきことは何ですか?
モデルのデフォルト値またはデータ型がよく作成されていることを確認します.
たとえば、デフォルト値を指定できないため、コードに詳細オプションを手動で作成する必要があります.
エラーが送信された場合は、元に戻すことで再移行する必要があります.
移行プロセスでは、モデルファイルは自動的に適用されません.
モデルファイルも一緒に修正します.
models/index.jsでは対応するコードで確認できます.
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.json')[env];
環境変数が指定されていない場合、デフォルトではenv変数に開発が割り当てられます.env変数を使用してconfigのjosonを現在の位置から取得し、パラメータ化設定の変数値のオブジェクトを使用します.
* __dirname은 현재 실행하는 파일의 절대경로이다.
process.env.NODE ENVは環境転換をサポートする
if (process.env.NODE_ENV === "test") {
env = "테스트 환경";
} else if (process.env.NODE_ENV === "dev") {
env = "개발 환경";
} else if (process.env.NODE_ENV === "pro") {
env = "배포 환경"
}
なぜ仕事をすれば混乱をもたらす.(可読性・保守困難)分離
管理する.
開発には基本スケルトンを作成する開発環境が必要です.
テストでは、データの追加削除など複数の操作が必要です.
導入にはユーザーデータが格納されており、勝手にテストすることはできません.
環境変数を利用できます.
でも今どうすればいいのか、
まず構成します.jsonファイルをjsファイルに置き換えます.
(jsonファイルはjs構文が無効な環境の「変数」なのでjsファイルに置き換える必要があります)
node環境で環境変数にアクセスするにはdotnvモジュールが必要です
だからjsファイルのconfigに変えますjsからdotnvモジュールを読み込む
const dotenv = require('dotenv');
dotenv.config();
その後、セキュリティ上の重要なデータが環境変数としてアクセスされます.const config = {
development: {
host: 'localhost',
user: 'root',
password: process.env.DATABASE_SPRINT_PASSWORD,
database: 'cmarket'
},
test: {
host: 'localhost',
user: 'root',
password: process.env.DATABASE_SPRINT_PASSWORD,
database: 'cmarket_test'
}
};
これをjsのオブジェクトフォーマットに変換し、プロファイルが必要な接続ファイルで次のようにします.適切な修正が必要
MySQLのvarcharまたはintタイプSequeizeで定義すべきタイプは?
int->整数の使用
varchar->文字列として使用
Sequelizeのデータ型の定義方法は異なります.
データ型は、次のようにオブジェクト内部でkey値とvalue値として定義されます.
url.init({
url: DataTypes.STRING,
title: DataTypes.STRING,
visits: {
type: DataTypes.INTEGER,
defaultValue: 0
}
}, {
sequelize,
modelName: 'url',
});
なぜSequelizeのタイプ定義とMySQLのタイプ定義が違うのですか?
Sequelizeは、複数のリレーショナル・データベース・システムを互換化するために使用されます.
共通の文法に統一されているからです.
移行時に注意すべきことは何ですか?
モデルのデフォルト値またはデータ型がよく作成されていることを確認します.
たとえば、デフォルト値を指定できないため、コードに詳細オプションを手動で作成する必要があります.
エラーが送信された場合は、元に戻すことで再移行する必要があります.
移行プロセスでは、モデルファイルは自動的に適用されません.
モデルファイルも一緒に修正します.
Reference
この問題について(sequrize splitt問題による理解), 我々は、より多くの情報をここで見つけました https://velog.io/@woals3000/시퀄라이즈テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol