私はアプリでobjection.jsを使用しています。
PostgreSQL データベース列に文字列配列を挿入しようとしたときに問題が発生しました。列は次のように定義されています:
path TEXT[] NOT NULL
これがスキーマです:
path: { type: 'array', items: { type: 'string' }, notNull: true }
upsertGraphAndFetch
(objection.js) を使用してテーブルの列を更新したいのですが、更新中に挿入中、列パスの挿入中にエラーが発生します
return NotificationUserOption.query().upsertGraphAndFetch( { userId: ctx. user, path, groupId, option }, { insertMissing: true },
['chat']
await updateGlobalChatNotificationOptIn({ variables: { path: ['chat'], option: updatedGlobalChatNotificationOptIn ? '30MinSummary' : 'off', }, }) }
のようなパスを渡すと、これを使用して配列に挿入しようとしますコード 次のエラーが発生しました:
配列リテラル形式エラー: "["chat"]" 「[」は配列の次元を明示的に指定する必要があります。
一重括弧 ('{chat}'
) と二重括弧 ([['chat']]
) を使用してみましたが、どちらも機能しませんでした。
PostgreSQL 列に挿入するときにこのエラーが発生しないように、配列リテラルを適切にフォーマットするにはどうすればよいですか?
文字列配列を
TEXT[]
型の PostgreSQL 列に挿入するには、JavaScript 配列を文字列表現に変換し、各要素を中括弧と二重引用符で囲む必要があります。Objection.js:
で次の操作を実行します。 リーリーこれで、
TEXT[]
によって "不正な配列リテラル" エラーが発生しなくなります。データベースからデータをクエリする場合、Objection.js はそれを JavaScript 配列に変換して戻します。#Apache 時代 #posgresql #graphql #objection.js