Maison  >  Questions et réponses  >  le corps du texte

Mauvais littéral de tableau lors de l'insertion d'un tableau dans la colonne PostgreSQL

J'utilise objection.js dans mon application.

J'ai rencontré un problème en essayant d'insérer un tableau de chaînes dans une colonne de base de données PostgreSQL. La colonne est définie comme suit :

path TEXT[] NOT NULL

Voici le schéma :

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

Je souhaite mettre à jour une colonne de table en utilisant upsertGraphAndFetch (objection.js), mais lors de la mise à jour et de l'insertion, j'obtiens une erreur lors de l'insertion du chemin de la colonne 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',
      },
    })
  }

Lorsque je passe un chemin similaire à ['chat']

rrreee

Cependant, lorsque j'essaie d'insérer un tableau en utilisant ce code, j'obtiens l'erreur suivante :

Littéral de tableau mal formé : "["chat"]" "[" doit spécifier explicitement les dimensions du tableau.

'{chat}')和双括号([['chat']]J'ai essayé d'utiliser des parenthèses simples (

) mais aucune n'a fonctionné.

Comment formater correctement un littéral de tableau afin de ne pas rencontrer cette erreur lors de l'insertion dans une colonne PostgreSQL ? 🎜
P粉141925181P粉141925181236 Il y a quelques jours475

répondre à tous(1)je répondrai

  • P粉009828788

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

    Pour insérer un tableau de chaînes dans une colonne de type PostgreSQL TEXT[], vous devez convertir le tableau JavaScript en une représentation sous forme de chaîne, en enveloppant chaque élément à l'aide d'accolades et de guillemets doubles.

    Faites ce qui suit dans Objection.js :

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

    Maintenant TEXT[] il n'y aura plus d'erreurs "littéral de tableau mal formé". Lors de l'interrogation des données de la base de données, Objection.js se chargera de les reconvertir en un tableau JavaScript.

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

    répondre
    0
  • Annulerrépondre