Heim  >  Fragen und Antworten  >  Hauptteil

Falsches Array-Literal beim Einfügen eines Arrays in die PostgreSQL-Spalte

Ich verwende objection.js in meiner App.

Beim Versuch, ein String-Array in eine PostgreSQL-Datenbankspalte einzufügen, ist ein Problem aufgetreten. Die Spalte ist wie folgt definiert:

path TEXT[] NOT NULL

Hier ist das Schema:

path: { type: 'array', items: { type: 'string' }, notNull: true }

Ich möchte eine Tabellenspalte mit upsertGraphAndFetch (objection.js) aktualisieren, aber beim Aktualisieren und Einfügen erhalte ich eine Fehlermeldung beim Einfügen des Spaltenpfads upsertGraphAndFetch(objection.js)更新表列,但在更新和插入时,插入列path时出现错误

return NotificationUserOption.query().upsertGraphAndFetch(
        { userId: ctx. user, path, groupId, option },
        { insertMissing: true },

当我传递类似于['chat']

await updateGlobalChatNotificationOptIn({
      variables: {
        path: ['chat'],
        option: updatedGlobalChatNotificationOptIn ? '30MinSummary' : 'off',
      },
    })
  }

Wenn ich einen Pfad ähnlich wie ['chat'] übergebe

rrreee

Wenn ich jedoch versuche, ein Array mit diesem Code einzufügen, erhalte ich die folgende Fehlermeldung:

Array-Literal fehlerhaft: „[„chat“]“ „[“ muss Array-Dimensionen explizit angeben.

'{chat}')和双括号([['chat']]Ich habe versucht, einzelne Klammern (

) zu verwenden, aber keines von beiden hat funktioniert.

Wie formatiere ich ein Array-Literal richtig, damit dieser Fehler beim Einfügen in eine PostgreSQL-Spalte nicht auftritt? 🎜
P粉141925181P粉141925181236 Tage vor474

Antworte allen(1)Ich werde antworten

  • P粉009828788

    P粉0098287882024-01-30 11:48:17

    要将字符串数组插入到PostgreSQL的TEXT[]类型的列中,您需要将JavaScript数组转换为字符串表示形式,使用花括号和双引号包裹每个元素。

    Objection.js中执行以下操作:

    // 将数组转换为字符串表示形式
    const pathArray = ['chat'];
    const pathString = `{${pathArray.join(',')}}`;
    
    // 使用Objection.js将数据插入数据库
    await NotificationUserOption.query().upsertGraphAndFetch(
      { userId: ctx.user, path: pathString, groupId, option },
      { insertMissing: true }
    );

    现在TEXT[]将不会出现任何"malformed array literal"错误。在从数据库查询数据时,Objection.js将处理将其转换回JavaScript数组。

    #Apache-Age #posgresql #graphql #objection.js

    Antwort
    0
  • StornierenAntwort