2017-09-08 4 views
0

Comment créer un index en utilisant la syntaxe de sequelize pour un champ JSONB dans postgres?Sequelize create index sur l'attribut JSONB

L'indice que je veux créer dans SQL serait:

CREATE INDEX people ON people (cast(people.data->>'id' AS bigint)); 

Comment ne parvenir avec la syntaxe de sequelize? J'ai recherché les documents et recherché des exemples sur google, mais je n'ai rien trouvé.

+0

au lieu du nom de domaine, vous pouvez fournir 'Sequelize.fn' dans votre définition d'index. Peut-être que vous pourriez utiliser quelque chose comme 'Sequelize.fn (" CAST ", Sequelize.col (" données "))'. Je ne connais pas sa syntaxe, donc je laisse juste un indice possible. –

Répondre

0

Je ne pouvais pas trouver un moyen de le faire plus élégant, fini à l'aide d'un crochet afterSync:

 afterSync(options, done) { 
      co(function*() { 
       yield sequelize.query(
        'CREATE INDEX people ON people (cast(people.data->>\'id\' AS bigint));' 
       ); 
      }) 
      .then(() => done()) 
      .catch(err => done(err)) 
     }