Ich lerne node.js und stieß auf knex.js und bookshelf.js, um mit verschiedenen Datenbanken zu interagieren. Ich versuche, ein einfaches KNX-Programm zu starten, aber irgendwie beendet das Programm nicht. Im Folgenden finden Sie das Programm:knex.js db Anruf wird nicht abgeschlossen
'use strict';
console.log('Getting knex');
var knex = require('./knex')({
client: 'mysql',
connection: {
host: '127.0.0.1',
user: 'shankhoneer',
password: 'password',
database: 'knex_test'
}
});
debugger;
console.log('got knex');
knex.schema.createTable('users', function(table) {
console.log('creating tables');
table.increments('id');
table.string('user_name');
}).then (function(msg){
console.log('Completed creation');
console.log(msg);
return {inserted: true};
});
ich zu debuggen versucht und festgestellt, dass Knex drossel Versprechen verwendet. Ist mein Problem durch unvollständigen Austritt aus einem Versprechen? Danke
Danke, es hat funktioniert! Kannst du mir bitte sagen, ob es endlich möglich ist, das Versprechen zu beenden? Danke noch einmal. –
Sie müssen nicht immer ein Versprechen mit Endlich beenden. Es folgt den Regeln des herkömmlichen 'try {} catch() {} finally 'von Javascript, in dem Sinne, dass der Code innerhalb von' finally 'immer am Ende der Versprechungskette ausgeführt wird. Sie sollten jedoch immer einen 'catch' haben, sonst könnten Sie keine geworfenen Fehler fangen. Bluebird ist klug genug, um sie erneut zu versuchen, wenn es in Ihrer Versprechenskette keinen "Haken" findet. – victorkohl
Mehr zum Thema auf [Bluebird github Seite] (https://github.com/petkaantonov/bluebird#error-handling). – victorkohl