Knex: Question concernant l'utilisation de then () avec Knex.js et Postgres

Créé le 16 janv. 2014  ·  3Commentaires  ·  Source: knex/knex

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);
});

question

Commentaire le plus utile

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.

Tous les 3 commentaires

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

  • MN

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!

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

aj0strow picture aj0strow  ·  3Commentaires

olaferlandsen picture olaferlandsen  ·  3Commentaires

legomind picture legomind  ·  3Commentaires

zettam picture zettam  ·  3Commentaires

saurabhghewari picture saurabhghewari  ·  3Commentaires