Tatasusunan literal yang salah apabila memasukkan tatasusunan ke dalam lajur PostgreSQL
P粉141925181
P粉141925181 2024-01-29 15:46:16
0
1
569

Saya menggunakan objection.js dalam apl saya.

Saya menghadapi masalah semasa cuba memasukkan tatasusunan rentetan ke dalam lajur pangkalan data PostgreSQL. Lajur ditakrifkan seperti berikut:

path TEXT[] NOT NULL

Berikut ialah skema:

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

Saya ingin mengemas kini lajur jadual menggunakan upsertGraphAndFetch (objection.js), tetapi semasa mengemas kini dan memasukkan, saya mendapat ralat semasa memasukkan laluan lajur 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',
      },
    })
  }

Apabila saya melepasi laluan yang serupa dengan ['chat']

rrreee

Walau bagaimanapun, apabila saya cuba memasukkan tatasusunan menggunakan kod ini, saya mendapat ralat berikut:

Tatasusunan literal cacat : "["sembang"]" "[" mesti menyatakan secara eksplisit dimensi tatasusunan.

'{chat}')和双括号([['chat']]Saya cuba menggunakan kurungan tunggal (

) tetapi tidak berjaya.

Bagaimana untuk memformat literal tatasusunan dengan betul supaya anda tidak menghadapi ralat ini semasa memasukkan ke dalam lajur PostgreSQL? 🎜
P粉141925181
P粉141925181

membalas semua(1)
P粉009828788

Untuk memasukkan tatasusunan rentetan ke dalam lajur jenis PostgreSQL TEXT[], anda perlu menukar tatasusunan JavaScript kepada perwakilan rentetan, membalut setiap elemen menggunakan pendakap kerinting dan petikan berganda.

Lakukan perkara berikut dalam Objection.js:

// 将数组转换为字符串表示形式
const pathArray = ['chat'];
const pathString = `{${pathArray.join(',')}}`;

// 使用Objection.js将数据插入数据库
await NotificationUserOption.query().upsertGraphAndFetch(
  { userId: ctx.user, path: pathString, groupId, option },
  { insertMissing: true }
);

Sekarang TEXT[] tidak akan ada sebarang ralat "arsuai cacat literal". Apabila menanyakan data daripada pangkalan data, Objection.js akan mengendalikan menukarnya kembali kepada tatasusunan JavaScript.

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan