2
votes

Comment convertir un tableau PostgreSQL en JS

Comment convertir PostgreSQL Array en chaîne, par exemple. "{1,2,3,4}" au tableau javascript / typescript: [1,2,3,4] . Les valeurs du tableau doivent être de type numérique.

J'ai essayé une solution avec replace et split mais elle renvoie des valeurs de chaîne.

var test = "{1,2,3,4}";
test = test.replace("{", "");
test = test.replace("}", "");
//test = test.replace(/\{|\}/gm, "")  //regex replace
test.split(",")   //['1', '2', '3', '4']


8 commentaires

Vous ne devriez pas avoir à faire cela. Le pilote postgresql devrait le faire pour vous. Lequel utilisez-vous ?


Vous pouvez remplacer les accolades par des carrés, puis utiliser la méthode JSON.parse. comme ceci JSON.parse (test.replace ("{", "[") .replace ("}", "]"))


@ DenysSéguret Je n'ai pas accès à ce que fait tout le backend.


@shajji Je sais, je voulais juste montrer toutes les étapes que je fais.


Réparer le backend serait probablement la bonne solution mais je sais que tous les projets ne sont pas gérés idéalement ...


PostgreSQL prend en charge le type JSON, je vous recommande de l'utiliser, c'est plus efficace et il n'y a aucune raison de formater un tableau de manière incorrecte


désolé je ne comprends pas, pouvez-vous s'il vous plaît me dire ce que vous entendez par 'montrer tout ce que je fais'


@shajji Montre tout ce que j'ai fait étape par étape :)


3 Réponses :


0
votes

Je trouve une solution avec JSON.parse mais cela doit également remplacer avant la conversion.

var test = "{1,2,3,4}";
test = test.replace("{", "[");
test = test.replace("}", "]");
JSON.parse(test)  //[1, 2, 3, 4]

Test avec la construction d'une chaîne pour la taille du tableau: 100000 ~ 900000: https://stackblitz.com/edit/typescript-gavnpg


0 commentaires

2
votes

Une solution plus propre n'impliquant pas la construction d'une chaîne JSON juste pour l'analyser:

test = test.match(/[\w.-]+/g).map(Number)

Mais lorsque vous traitez avec une base de données, vous n'êtes généralement pas censé analyser les données vous-même sauf si vous écrivez le pilote (mais il y en a déjà de bons pour postgresql).


0 commentaires

0
votes
JSON.parse("[" + test.slice(1, test.length-1) + "]")

1 commentaires

Veuillez ajouter du contexte à votre réponse en expliquant en quoi il s'agit d'une solution au problème. Merci! - À partir de l'examen