2017-07-15 1 views
0

J'utilise une mutation autogérée postgraphql pour créer une ligne avec graphql dans une table postgres qui a une colonne de type UUID [].Mutation graphql pour une colonne de type UUID []

Cependant, il ne semble pas être un moyen de sauver cette UUID [] données avec graphql? Est-ce un type de données que graphql ne prend pas en compte ou suis-je en train de former le tableau à tort?

Quand je vais créer la ligne dans graphiql:

mutation { 
    createJob(
    input: { 
     user_ids: ["5b7323ac-e235-4edb-bbf9-97495d9a42a1"], 
     instructions: "Job Instructions", 
     publishedDate: "2017-06-07"} 
    } 
) 
} 

Je reçois l'erreur suivante:

"message": "column \"user_ids\" is of type uuid[] but expression is of type text[]" 

Est-ce un UUID technique ne sont pas stockés comme texte? Je l'ai essayé différentes façons de former le tableau UUID, mais rien ne semble fonctionner

Répondre

1

Vous pouvez probablement une solution à ce problème en créant un cast implicite:

CREATE CAST (text[] AS uuid[]) 
    WITH INOUT 
    AS IMPLICIT ; 

PostgreSQL automatiquement faire la conversion de text[] à uuid[]; qui semble juste que c'est l'étape nécessaire.


REMARQUE: Le code ci-dessus doit être exécuté à partir de « propriétaire de type UUID [] ou texte [] », ce qui signifie généralement: postgres ou le propriétaire de la base de données.


Pour vérifier que cela fonctionne, vous pouvez juste faire:

CREATE TABLE t 
(
    ids uuid[] 
) ; 

INSERT INTO t 
    (ids) 
VALUES 
    (ARRAY['5b7323ac-e235-4edb-bbf9-97495d9a42a1','5b7323ac-e235-4edb-bbf9-97495d9a42a2']), 
    (ARRAY['6b7323ac-e235-4edb-bbf9-97495d9a42a1']) ; 

... et puis, le tester avec GraphQL