[解決済み] SequelizeでfindOrCreateを使う方法
2022-02-02 19:15:07
質問
Sequelize初心者です。 TwitterやFacebookでoAuth認証を行い、ユーザー情報をデータベースに保存したいのですが、どのようにすればよいのでしょうか?
しかし、OAuth認証が複数のサイトで行われる場合、以下のような情報が漏れてしまうという問題があります。
userid
に登録されたものが、他のサイトと衝突してしまう。
これを回避するために、指定した
userid
がすでにデータベースに存在しない場合。
やはり、Sequelizeの
findOrCreate
を使用することができますが、私はその方法を知りません。
findOrCreate
.
upsertの使い方は知っているので、その上で
findOrCreate
下記のupsertの説明のように。しかし、このような条件分岐を行いたいのです。
if (userid! = "○○○" && username! = "○○○")
.
User.upsert({
userid: profile.id,
username: profile.username,
accountid: c + 1,
}).then(() => {
done(null, profile);
});
どうすればいいのでしょうか?
解決方法は?
// remember to use a transaction as you are not sure whether the user is
// already present in DB or not (and you might end up creating the user -
// a write operation on DB)
models.sequelize.transaction(function(t) {
return models.users.findOrCreate({
where: {
userId: profile.userId,
name: profile.name
},
transaction: t
})
.spread(function(userResult, created){
// userResult is the user instance
if (created) {
// created will be true if a new user was created
}
});
});
関連
-
[解決済み] ベースとなるテーブルはどのように決定するのですか?
-
[解決済み] なぜOracleはoci.dllを見つけられないのでしょうか?
-
[解決済み] postgresql pg_dump の出力はどこに行くのでしょうか?
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み】データベース、テーブルとカラムの命名規則?[クローズド]
-
[解決済み】非常に大きなデータベースファイルを持つsqliteのパフォーマンス特性は何ですか?[クローズド]。
-
[解決済み】{merge: true}のあるセットとupdateの違いについて
-
[解決済み】pgadminでherokuのデータベースに接続する。
-
[解決済み] OAuthでREST APIを保護しつつ、サードパーティのOAuthプロバイダによる認証を許可する(DotNetOpenAuthを使用する)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 多くのSQLiteデータベースをマージするにはどうすればよいですか?
-
[解決済み] mongodb 4 データディレクトリ C:\data_dbdb not found
-
[解決済み] どのようにneo4jデータベースをリセット/クリア/削除するには?
-
[解決済み] データベースマネージャの開始コマンドは発行されていません。SQLSTATE=57019
-
[解決済み] ベースとなるテーブルはどのように決定するのですか?
-
[解決済み] Hibernateです。ManyToOne生成フィールドraw(255)
-
[解決済み] ORA-011033 を解決する方法。ORACLE の初期化またはシャットダウンが進行中です。
-
[解決済み】データベース、テーブルとカラムの命名規則?[クローズド]
-
[解決済み】phpMyAdmin - Error > Incorrect format parameter?
-
[解決済み】ドッカー化したPostgreSQLデータベースのバックアップ/リストア