[解決済み] シーケライズの作成・更新
2022-02-14 02:30:58
質問
NodejsプロジェクトでSequelizeを使用していますが、解決に苦労する問題が見つかりました。 基本的に、私はオブジェクトの配列をサーバーから取得し、それをオブジェクトとしてデータベースに挿入するクーロンを持っています(この場合、漫画)。しかし、私はすでにオブジェクトの1つを持っている場合、私はそれを更新する必要があります。
基本的に、私はオブジェクトの配列を持っており、BulkCreate()メソッドを使用することができました。しかし、Cronが再び開始されると、それは解決しないので、私はupsert trueフラグで何らかの更新が必要でした。そして本題。これらの作成または更新の後に一度だけ実行されるコールバックを持つ必要があります。誰かそれを行う方法についてのアイデアを持っていますか?オブジェクトの配列を反復し、それを作成または更新し、その後単一のコールバックを取得する?
ご清聴ありがとうございました。
解決方法は?
からの
ドキュメント
というクエリーは必要ありません。
where
を使用して、オブジェクトを取得した後に更新を実行します。また、プロミスを使うことで、コールバックも簡単になるはずです。
実装方法
function upsert(values, condition) {
return Model
.findOne({ where: condition })
.then(function(obj) {
// update
if(obj)
return obj.update(values);
// insert
return Model.create(values);
})
}
使用方法
upsert({ first_name: 'Taku' }, { id: 1234 }).then(function(result){
res.status(200).send({success: true});
});
備考
- この操作はアトミックではありません。
- 2つのネットワークコールを作成します。
ということは、アプローチを再考し、おそらく1つのネットワークコールで値を更新するだけで、どちらかを行うことをお勧めします。
- 返された値(つまりrows_affected)を見て、何をすべきかを決める。
- 更新操作に成功した場合は成功を返します。これは、リソースが存在するかどうかは、このサービスの責任範囲外であるためです。
関連
-
[解決済み】MySQLのエラーコードです。MySQL WorkbenchでUPDATE中に1175のエラーが発生しました。
-
[解決済み] mysqldです。dir を data に変更できません。サーバーが起動しません
-
[解決済み] テーブルのストレージエンジンは修復をサポートしていません。InnoDB または MyISAM?
-
[解決済み] アプリでSSLを有効にしていない場合、AzureのMySQLサーバーへの接続に失敗するのはなぜですか?
-
[解決済み] テーブルがクラッシュしたと判定されたため、修復する必要があります。
-
[解決済み] DEFAULT NULLとCHECKBOX NULL mysqlの違いは何ですか?
-
[解決済み] package.jsonの各依存関係を最新バージョンに更新する方法は?
-
[解決済み] Node.jsを使用してディレクトリが存在しない場合に作成する方法
-
[解決済み] "INSERT IGNORE" vs "INSERT ... ON DUPLICATE KEY UPDATE"
-
[解決済み] Mongooseで文書を更新/アップサートするにはどうしたらいいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】autoカラムは1つしか存在できない
-
[解決済み】カラムのデータが切り捨てられた?
-
[解決済み】MAMPのmysqlサーバーが起動しない。mysqlのプロセスが起動していない
-
[解決済み】MySQL 派生テーブルはすべて独自のエイリアスを持つ必要があります。
-
[解決済み] ONLY_FULL_GROUP_BYの無効化
-
[解決済み] Error Dropping Database (Can't rmdir '.test', errno: 17)
-
[解決済み] MySQLにおけるOracleのRowIDに相当する。
-
[解決済み] MySQL エラー 1241。オペランドには1つのカラムが含まれている必要があります。
-
[解決済み] #1136 - 列数が 1 行目の値数と一致しません。
-
[解決済み] テーブルがクラッシュしたと判定されたため、修復する必要があります。