Я пытаюсь написать базовый класс для sequelize.js. Этот класс свяжет все связанные таблицы. includeFk выполняет эту задачу. Но он имеет обещание и должен быть рекурсивным. Класс:Рекурсивная функция Ecmascript 6 с обещанием
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);
});
});
});
}
}
Ошибка:
(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
Это обрабатывает только сообщение об ошибке. Но моя проблема в том, что обещания не работают с рекурсивными функциями. – osmanraifgunes
Первой проблемой является то, что вы не можете получить значение журнала ошибок, если не обрабатываете ошибки, возникшие в обещании. Я считаю, что в области функций что-то не так, поэтому рекурсивная функция работает неправильно. – iKoala
Теперь журнал ошибок: TypeError: Невозможно прочитать свойство Symbol (Symbol.iterator) 'неопределенного в Function.all (native) – osmanraifgunes