У меня есть только базовые знания JS (в основном, jQuery), так что это может быть очень просто. И осознайте, что с точки зрения производительности это может быть не лучшим решением, но пока это просто доказательство концепции.
У меня есть это простое приложение Koa. Все, что я пытаюсь сделать, это вызвать внешний API (Airtable) при доступе к маршруту / callapi и добавить некоторые данные из ответа API к ctx.body.
Однако я получаю 404 Not Foundпри переходе к http://localhost:3000/callapi я понимаю, что это, вероятно, потому что вызов API является асинхронным, поэтому Node.js / Koa не ждут, пока он завершит и продолжит выполнение, но в другом месте нет кода, устанавливающего тело ответатак что получается 404.
Как мне этого добиться? Рад использовать другое промежуточное программное обеспечение для маршрутизации или дополнительное промежуточное программное обеспечение, если это необходимо.
Я считаю, что Promises с async / await - это новый путь, который использует Коа, поэтому, если я могу каким-то образом добавить / обернуть это, это будетлучшее, что я думаю.
const KoaRoute = require('koa-route');
const Koa = require('koa');
const app = new Koa();
var Airtable = require('airtable');
var base = new Airtable({apiKey: 'keyI6rZxwsXXXXXXX'}).base('appXXXXXX');
app.use(KoaRoute.get('/callapi', async function (ctx) {
await base('Couples').find('reclnxjiMeSljrzP0', function(err, record) {
console.log('Retrieved', record.id);
ctx.body = "Record ID from API: " + record.id;
});
}));
app.listen(3000);
console.log('listening on port 3000');