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時出現(xiàn)錯誤
return NotificationUserOption.query().upsertGraphAndFetch( { userId: ctx. user, path, groupId, option }, { insertMissing: true },
當(dāng)我傳遞類似于['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 (
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?:
// 將數(shù)組轉(zhuǎn)換為字符串表示形式 const pathArray = ['chat']; const pathString = `{${pathArray.join(',')}}`; // 使用Objection.js將數(shù)據(jù)插入數(shù)據(jù)庫 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