Estoy tratando de usar then () para encadenar mi tabla de creación y la inserción de filas.
Se crea la tabla pero no se realiza ninguna inserción (no se detecta ningún error).
¿Alguien puede decirme dónde estoy equivocado?
Gracias
Minnesota
var Promise = require ('pájaro azul');
var Knex = require ('knex');
Knex.knex = Knex.initialize ({
cliente: 'pg',
conexión: {
...
},
debug: verdadero
});
var knex = require ('knex'). knex;
knex.schema.createTable ('departamento', función (tabla) {
table.increments ('department_id'). primary (). notNullable ();
table.string ('nombre_departamento', 80) .unique (). notNullable ();
table.string ('nombre_del_edificio', 40);
}). luego (función () {
console.log ('se ha creado la tabla de departamentos');
knex ('departamento'). insertar (
[{nombre_departamento: 'Nano Tecnología', nombre del edificio: 'bloque-A'},
{nombre_departamento: 'Ingeniería mecánica', nombre_del_edificio: 'block-C'}]
'departamento_id'
);
}). luego (función () {
console.log ('departamentos insertados');
}). catch (función (e) {
console.log (e);
});
Tiene que return
su knex
insertar declaración, o agregarle controladores (usando then
o catch
/ caught
), de lo contrario, solo está creando una instancia builder
pero en realidad no está ejecutando la consulta. Cuando llama a métodos como insert
, select
, from
etc., básicamente todos los métodos del generador de consultas, solo modificará su estado interno, pero no ejecutará la consulta. . Eso solo sucederá cuando agregue uno o más controladores a la instancia usando then
, catch
/ caught
, lastly
/ finally
, tap
o exec
, porque esto creará el Promise
real, que envía la consulta al cliente de la base de datos.
Knex y Bookshelf son geniales. Muchas gracias
El 16 de enero de 2014, a las 13:17, Johannes Lumpe [email protected] escribió:
Debe devolver su declaración de inserción de knex o agregarle controladores (usando then o catch / catch), de lo contrario, solo está creando una instancia de constructor pero en realidad no está ejecutando la consulta. Cuando llame a métodos como insertar, seleccione, desde etc. - básicamente todos los métodos del generador de consultas - solo modificará su estado interno, pero no ejecutará la consulta. Eso solo sucederá cuando agregue uno o más controladores a la instancia usando then, catch / catch, last / finalmente, tap o exec, porque esto creará la Promise real, que envía la consulta al cliente de la base de datos.
-
Responda a este correo electrónico directamente o véalo en GitHub.
¡De nada!
Comentario más útil
Tiene que
return
suknex
insertar declaración, o agregarle controladores (usandothen
ocatch
/caught
), de lo contrario, solo está creando una instanciabuilder
pero en realidad no está ejecutando la consulta. Cuando llama a métodos comoinsert
,select
,from
etc., básicamente todos los métodos del generador de consultas, solo modificará su estado interno, pero no ejecutará la consulta. . Eso solo sucederá cuando agregue uno o más controladores a la instancia usandothen
,catch
/caught
,lastly
/finally
,tap
oexec
, porque esto creará elPromise
real, que envía la consulta al cliente de la base de datos.