J'essaie d'utiliser then () pour chaîner ma table de création et l'insertion de lignes.
La table est créée mais aucune insertion ne se produit (aucune erreur n'est détectée).
Quelqu'un peut-il me dire où je me trompe?
Merci
MN
var Promise = require ('bluebird');
var Knex = require ('knex');
Knex.knex = Knex.initialize ({
client: 'pg',
lien: {
…
},
debug: vrai
});
var knex = require ('knex'). knex;
knex.schema.createTable ('département', fonction (table) {
table.increments ('department_id'). primary (). notNullable ();
table.string ('nom_service', 80) .unique (). notNullable ();
table.string ('nom_du_difice', 40);
}). puis (function () {
console.log ('la table de service a été créée');
knex ('département'). insérer (
[{department_name: 'Nano Technology', building_name: 'block-A'},
{department_name: 'Mechanical Engineering', building_name: 'block-C'}],
'department_id'
);
}). puis (function () {
console.log («départements insérés»);
}). catch (fonction (e) {
console.log (e);
});
Vous devez soit return
votre knex
insert instruction, soit y ajouter des gestionnaires (en utilisant then
ou catch
/ caught
), sinon, vous créez simplement une instance builder
mais n'exécutez pas réellement la requête. Lorsque vous appelez des méthodes comme insert
, select
, from
etc. . Cela ne se produira que lorsque vous ajoutez un ou plusieurs gestionnaires à l'instance en utilisant then
, catch
/ caught
, lastly
/ finally
, tap
ou exec
, car cela créera alors le Promise
réel, qui envoie la requête au client de la base de données.
Knex et Bookshelf sont super. Merci beaucoup
Le 16 janvier 2014, à 13h17, Johannes Lumpe [email protected] a écrit:
Vous devez soit retourner votre instruction d'insertion knex, soit y ajouter des gestionnaires (en utilisant then ou catch / catch), sinon vous créez simplement une instance de générateur mais n'exécutez pas réellement la requête. Lorsque vous appelez des méthodes comme insérer, sélectionnez, frometc. - essentiellement toutes les méthodes du générateur de requêtes - il ne modifiera que son état interne, mais n'exécutera pas réellement la requête. Cela ne se produira que lorsque vous ajoutez un ou plusieurs gestionnaires à l'instance en utilisant then, catch / catch, enfin / enfin, tap ou exec, car cela créera alors la promesse réelle, qui envoie la requête au client de base de données.
-
Répondez directement à cet e-mail ou affichez-le sur GitHub.
Je vous en prie!
Commentaire le plus utile
Vous devez soit
return
votreknex
insert instruction, soit y ajouter des gestionnaires (en utilisantthen
oucatch
/caught
), sinon, vous créez simplement une instancebuilder
mais n'exécutez pas réellement la requête. Lorsque vous appelez des méthodes commeinsert
,select
,from
etc. . Cela ne se produira que lorsque vous ajoutez un ou plusieurs gestionnaires à l'instance en utilisantthen
,catch
/caught
,lastly
/finally
,tap
ouexec
, car cela créera alors lePromise
réel, qui envoie la requête au client de la base de données.