Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

242
Visualizações
Cómo encadenar promesas dentro de una migración knex.js

session-pg-simple requiere que se cree una tabla para almacenar sesiones, quiero agregar esta tabla a mi script de migración knex.js.

 CREATE TABLE "session" ( "sid" varchar NOT NULL COLLATE "default", "sess" json NOT NULL, "expire" timestamp(6) NOT NULL ) WITH (OIDS=FALSE); ALTER TABLE "session" ADD CONSTRAINT "session_pkey" PRIMARY KEY ("sid") NOT DEFERRABLE INITIALLY IMMEDIATE; CREATE INDEX "IDX_session_expire" ON "session" ("expire");

Este es el script de creación de tablas de https://github.com/voxpelli/node-connect-pg-simple/blob/HEAD/table.sql

 exports.up = function (knex) { return Promise.all([ knex.schema .createTable("session", function (table) { table.text("sid").notNullable().collate("default"); table.json("sess").notNullable(); table.timestamp("expire", { precision: 6 }).notNullable(); }) .then( knex.schema.raw( 'ALTER TABLE "session" ADD CONSTRAINT "session_pkey" PRIMARY KEY ("sid") NOT DEFERRABLE INITIALLY IMMEDIATE;' ) ) .then( knex.schema.raw( 'CREATE INDEX "IDX_session_expire" ON "session" ("expire");' ) ), knex.schema.createTable("users", function (table) { //... }), ]); };

Los 2 .thens después de la creación de la tabla inicial no se ejecutan, intenté agregarlos al final de Promise.all([]) pero tampoco funcionó. ¿Cómo implemento esas 2 líneas en mi script?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Promise.all no es necesario then , y te perdiste la declaración de return en los bloques. De todos modos, su código se puede simplificar enormemente, knex admite encadenamiento , lo que significa que puede crear una cadena de métodos que se llamarán uno tras otro:

 exports.up = function (knex) { return knex.schema .createTable("session", function (table) { table.text("sid").notNullable().collate("default"); table.json("sess").notNullable(); table.timestamp("expire", { precision: 6 }).notNullable(); }) .raw( 'ALTER TABLE "session" ADD CONSTRAINT "session_pkey" PRIMARY KEY ("sid") NOT DEFERRABLE INITIALLY IMMEDIATE;' ) .raw( 'CREATE INDEX "IDX_session_expire" ON "session" ("expire");' ) .createTable("users", function (table) { //... }) };
about 4 years ago · Juan Pablo Isaza Relatório

0

Con este código, no necesita modificar la tabla o crear un índice dentro de raw :

 exports.up = knex => { return Promise.all([ knex.schema.createTable('session', function (table) { table.string('sid').primary().notNullable(); table.json('sess').notNullable(); table.timestamp('expire', { precision: 6 }).notNullable(); }) ]); }; exports.down = knex => { return Promise.all([knex.schema.dropTableIfExists('sessions') ]); };
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda