knexを使用してpostgresデータベースに多くの行を挿入する際に問題が発生しました。挿入する必要のある動的な行数があります。私が期待する結果は次のとおりです。
行を4回挿入します(4つは例です。フロントエンドから動的に送信されるため、正確な挿入数はわかりません):
どうすればそれを達成できますか?forEachでループしようとしましたが、非同期操作であるため、.then()は4回呼び出されるため使用できません。
これが私が試したことです。field_idとreq.bodyを動的に取得するように設定する方法がわかりません。
フィールド= [1,2,3,4]
期待される結果:
knexは、次のように4つの挿入を作成します。field_id: 1、product_id:静的ID値: frontValue [1] ETC
knex('metadata').insert(
[{ field_id: fields,
product_id: product_id,
value: req.body[fields]
}]
)
私が正しく理解している場合は、metadata
テーブルに4つのレコードを挿入します。
{ field_id: 1, product_id: X, value: req.body[1] },
{ field_id: 2, product_id: X, value: req.body[2] },
{ field_id: 3, product_id: X, value: req.body[3] },
{ field_id: 4, product_id: X, value: req.body[4] }
同じステートメントに複数のレコードを挿入するには、それぞれがKnexに提供する配列内の個別の要素である必要があります(insert
追加の例については、ドキュメントを確認してください)。
const product_id = X;
const fieldsToInsert = fields.map(field =>
({ field_id: field, product_id, value: req.body[field] }));
return knex('metadata').insert(fieldsToInsert)
.then(() => { /* handle success */ })
.catch(() => { /* handle failure */});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加