sequelize関係qerry


Sequlizeリレーションシップクエリー



プロジェクトの進行中に、モデルにリレーショナル・クエリーを設定する詳細がリストされましたが、このモデルにデータを登録する資料は少ないので、整理しました.
まず、userとfollowを1対多の関係に設定します.1人のプレイヤーは複数の追随者を持つことができる.
DB Diagramは
この場合はsequelizeモデル設定です.
これを行うことができますが、apiが各アドレスの葦のテーブルでデータをクエリーし、格納する問題があるテーブルを作成しました.

(1)データ照会


findOneまたはfindAllを使用してデータをクエリーします.しかし、私たちが今クエリーする必要があるのは、userテーブルでfolwingと関係のあるuserを検索することです.
この場合、includeを使用してこの問題を解決することができる.
const { user } = require('../models')
user.findOne({
	include : { model : following, where : { name : req.body.name } }
})

(2)データの追加


上記の内容は理解できますが、問題は、次にデータをインポートできることですが、データベースのテーブルにデータを追加する必要があります.
最初の試みは上記のように行われたが、もちろん成功しなかった.sequelizeリレーションシップクエリーの変更、作成、削除は、異なる方法で行う必要があります.
const user = await user.findOne({ where : {name : req.body.name}})
const following = await following.create({ following : req.body.name, user_id : req.body.id})
await user.addFollowing(following);
このコードaddFollowingを初めて見ました.私はそんなことを宣言したことがありません.なぜそんなものが現れたのかと急に思いました.研究により,モデルに関係が確立されると,動詞の後ろにモデル名を付ける方法がサポートされることが分かった.(原理は...探しても見つからない)
上の方法のほかに、他の方法があります.
get(テーブル名):クエリー
set(テーブル名):変更
add(テーブル名):作成
add(テーブル名)s:複数作成
remove(テーブル名):削除

ソース


https://velog.io/@delay100/Sequelizewith-MySQL-2