Это код моего nodejs API:
exports.createBusiness = (req, res) => {
const business = { name: req.body.name };
Business.create(business)
.then(() => {
createSchema() // this function, i pasted below
.then(() => {
console.log('6 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>');
});
})
.catch((err) => {
console.log('err:', err);
});
};
Моя функция:
const createSchema = () => Business.findAll({
raw: true,
}).then((data) => {
console.log('1 >>>>>>>>>>>>>>>>>>>>>>>>>>>>');
data.forEach((client) => {
console.log('2 >>>>>>>>>>>>>>>>>>>>>>>>>>>>');
postgresDB.createSchema(client.code).then(() => {
console.log('3 >>>>>>>>>>>>>>>>>>>>>>>>>>>>');
Object.keys(postgresDB.models).forEach((currentItem) => {
console.log('4 >>>>>>>>>>>>>>>>>>>>>>>>>>>>');
postgresDB.models[currentItem].schema(client.code).sync();
console.log('5 >>>>>>>>>>>>>>>>>>>>>>>>>>>>');
});
console.log('Postgres schema created');
});
});
}).catch((err) => {
console.log('Warning:', err.message);
});
Мой вывод теперь поступает в консоль в следующем порядке:
1
2
2
2
2
2
2
2
2
2
6
3
4
5
Мой ожидаемый вывод будет в консоли: (мне нужно выполнить синхронно):
1
2
2
2
2
2
2
2
2
2
3
4
5
6
Как заставить это вести себя синхронно, используя обещания или обратные вызовы?
Я пробовал с promise.all, но не работает, или с асинхронным ожиданием можно справиться?