Sequelize Day 2(TIL 83日目)
6955 ワード
「公式文書を参考にするときは必ずNoteを確認してください!
Intro
会社ごとに異なる会議があります.公式文書にも会社の特徴があるようです.Sequelizeの公式ドキュメントを表示するときに発見された特徴は、見逃せない重要な部分が
Note: ~
にあることです.△もちろん、これは私個人の考えです.だからNoteを見つけたらスキップしないでぜひチェックしてみてください今日も公式ファイルを見て整理してSequeizeの内容を理解するのに役立ちます昨日の文章も今日もほとんどノートの部分をまとめた文章では始めましょう
モデルインスタンスを記録する場合
本書の「モデルインスタンス」のNote: logging instancesセクションでは、モデルインスタンスを直接撮影するのではなく、
toJSON()
を使用してログ撮影を行うことをお勧めします.Sequelize自体には多くの機能があるため、ログにすべての値を見つけるのは難しい.正式なドキュメントを処理しながら何かを学びたい場合は、consoleを使用します.いつもロゴを一つ一つ撮影して、中に何が使えるかを知る必要があります.Sequeizeを処理する場合、必要なコンテンツをすぐに理解するには、
toJSON()
を適用する必要があります.知っていれば良い内容になるのでご紹介しますSaving only some fields
Sequelizeのモデルインスタンスを使用すると混同される可能性があるので、記録したいと思います.これは、公式文書でSaving only some fieldsと記述されている部分です.
const jane = await User.create({ name: "Jane" });
console.log(jane.name); // "Jane"
console.log(jane.favoriteColor); // "green"
jane.name = "Jane II";
jane.favoriteColor = "blue";
await jane.save({ fields: ['name'] });
console.log(jane.name); // "Jane II"
console.log(jane.favoriteColor); // "blue"
// The above printed blue because the local object has it set to blue, but
// in the database it is still "green":
await jane.reload();
console.log(jane.name); // "Jane II"
console.log(jane.favoriteColor); // "green"
Sequelizeでsave
を使用している場合、変更するカラムを配列に入れると、特定のカラムの値しか変更できません.上記のサンプルコードでは、4-5行目にnameとfavoriteColorが設定されていますが、6行目には「name」というcolumn名のみが渡されます.ただしコンソールログ(Jane.FavoriteColor)を撮って確認したら「blue」だった.公式ドキュメントでは、コンソールログが青色に出力されるのは、データベース値の変更ではなく、ローカルオブジェクトが青色に設定されているためだと付け加えた.開発環境では、オブジェクトの値が変更され、コンソールに印刷されますが、お気に入りColorの保存を求めるメッセージが表示されないため、データベースは緑色のままです.したがって、
reload
を選択すると、実際のgreen値が再出力されます.Sequelizeは、
save
またはcreate
を使用して、インスタンスベースのデータベースにデータを格納する必要があります.したがって、コンソールに印刷する値と、実際のデータベースに保存する値が異なる場合があります.また、
save
を使用する際に注意すべき点も下記のChange-awareness of saveに記載されていますので、ご確認ください.Incrementing and decrementing integer values
Sequelizeはincrement/decrementの方法を提供し、デジタル材料の値を増加または減少させることができる.
方法の使い方は以下の通りです.
인스턴스를_저장한_변수명.increment(컬럼_이름, {by: 증가시키는_양});
ハングルで書かれた部分に実際に対応する値を付ければいいです.複数のカラムを同時に変更する場合は、配列に名前をリストして渡すことができます.方法としての2番目のパラメータ伝達である{by: ?}
については、1つのパラメータだけ追加したい場合は、2番目のパラメータを省略してもよい.リンクで説明されている正式なドキュメントの詳細例については、を参照してください.
findOrCreate
findOrCreateメソッドは、データベースにデータを挿入したいときに同じデータがある場合に、この値を使用して、データがない場合にのみ新しいデータを作成する方法です.
このメソッドは、データベースに同じデータが存在するかどうかにかかわらず、インスタンスを返します.作成したかインポートしたかを示すブール値を返します.式ドキュメントには、構造分解割当式を使用して返される値が含まれます.
重複するデータをフィルタリングできるので、これは良い解決策だと思います.使用方法の詳細については、リンクで説明した正式なドキュメントを参照してください.
Reference
この問題について(Sequelize Day 2(TIL 83日目)), 我々は、より多くの情報をここで見つけました https://velog.io/@eensungkim/Sequelize-Day2-TIL-83일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol