Ich versuche, eine Basisklasse für Sequelize.js zu schreiben. Diese Klasse verknüpft alle zugehörigen Tabellen. includeFk Funktion diese Aufgabe realisieren. Aber es hat ein Versprechen und sollte rekursiv sein. Klasse:Ecmascript 6 rekursive Funktion mit Versprechen
class base {
constructor(table, depth) {
this._table = table;
this._depth = depth;
}
includeFK(table, depth, includes) {
return new Promise((resolve, reject) => {
if (depth <= this._depth) {
for (var att in table.tableAttributes) {
table.belongsTo(m, {
as: m.name,
foreignKey: att
})
includes.push({
model: m
});
}
}
Promise.all(
Object.keys(table.associations).forEach(tbl => {
this.includeFK(table.associations[tbl].target, depth + 1, includes);
}
)).then(results => {
resolve(true)
});
} else {
resolve(true);
}
});
all(query) {
return new Promise((resolve, reject) => {
var tmp = this;
var includes = [];
Promise.all([
this.includeFK(tmp._table, 1, includes),
this.includeLang()
]).then(function() {
tmp._table.findAll({
include: includes
}).then(function(dbStatus) {
resolve(dbStatus);
});
});
});
}
}
Fehler:
(node:25079) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 3): TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined (node:25079) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. (node:25079) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 4): TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined
Es behandelt nur Fehler. Aber mein Problem ist, dass Versprechen nicht mit rekursiven Funktionen arbeiten. – osmanraifgunes
Das erste Problem besteht darin, dass Sie kein Bedeutungsfehlerprotokoll erhalten können, wenn Sie die in der Zusage geworfenen Fehler nicht behandeln. Ich glaube, mit dem Funktionsumfang stimmt etwas nicht, daher funktioniert die rekursive Funktion nicht richtig. – iKoala
Jetzt Fehlerprotokoll ist: TypeError: Kann nicht gelesen werden Symbol (Symbol.iterator) 'von undefined bei Function.all (native) – osmanraifgunes