Knex: Pergunta sobre o uso de then () com Knex.js e Postgres

Criado em 16 jan. 2014  ·  3Comentários  ·  Fonte: knex/knex

Estou tentando usar then () para encadear minha tabela de criação e inserção de linhas.
A tabela é criada, mas nenhuma inserção acontece (nenhum erro é detectado).
Alguém pode me dizer onde estou errado?

obrigado
MN

var Promise = require ('bluebird');
var Knex = requer ('knex');
Knex.knex = Knex.initialize ({
cliente: 'pg',
conexão: {

},
debug: true
});
var knex = require ('knex'). knex;
knex.schema.createTable ('departamento', função (tabela) {
table.increments ('department_id'). primary (). notNullable ();
table.string ('department_name', 80) .unique (). notNullable ();
table.string ('building_name', 40);
}). então (função () {
console.log ('a tabela de departamento foi criada');
knex ('departamento'). inserir (
[{department_name: 'Nanotecnologia', building_name: 'block-A'},
{departamento_name: 'Engenharia Mecânica', building_name: 'block-C'}],
'departamento_id'
);
}). então (função () {
console.log ('departamentos inseridos');
}). catch (function (e) {
console.log (e);
});

question

Comentários muito úteis

Você deve return sua instrução de knex inserir ou adicionar manipuladores a ela (usando then ou catch / caught ), caso contrário, você está apenas criando uma instância builder mas não está realmente executando a consulta. Quando você chama métodos como insert , select , from etc. - basicamente todos os métodos no construtor de consultas - ele apenas modificará seu estado interno, mas não executará realmente a consulta . Isso só acontecerá quando você adicionar um ou mais manipuladores à instância usando then , catch / caught , lastly / finally , tap ou exec , porque isso criará o Promise real, que envia a consulta ao cliente do banco de dados.

Todos 3 comentários

Você deve return sua instrução de knex inserir ou adicionar manipuladores a ela (usando then ou catch / caught ), caso contrário, você está apenas criando uma instância builder mas não está realmente executando a consulta. Quando você chama métodos como insert , select , from etc. - basicamente todos os métodos no construtor de consultas - ele apenas modificará seu estado interno, mas não executará realmente a consulta . Isso só acontecerá quando você adicionar um ou mais manipuladores à instância usando then , catch / caught , lastly / finally , tap ou exec , porque isso criará o Promise real, que envia a consulta ao cliente do banco de dados.

Knex e Bookshelf são ótimos. Muito obrigado

  • MN

Em 16 de janeiro de 2014, às 13:17, Johannes Lumpe [email protected] escreveu:

Você deve retornar sua instrução de inserção do knex ou adicionar manipuladores a ela (usando then ou catch / catch), caso contrário, você está apenas criando uma instância do construtor, mas não está realmente executando a consulta. Quando você chama métodos como insert, select, frometc. - basicamente todos os métodos no construtor de consultas - ele apenas modificará seu estado interno, mas não executará realmente a consulta. Isso só acontecerá quando você adicionar um ou mais manipuladores à instância usando then, catch / catch, last / finally, tap ou exec, porque isso criará o Promise real, que envia a consulta ao cliente do banco de dados.

-
Responda a este e-mail diretamente ou visualize-o no GitHub.

De nada!

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

arconus picture arconus  ·  3Comentários

olaferlandsen picture olaferlandsen  ·  3Comentários

mtom55 picture mtom55  ·  3Comentários

fsebbah picture fsebbah  ·  3Comentários

saurabhghewari picture saurabhghewari  ·  3Comentários