Я пытаюсь настроить приложение NodeJS с API GraphiQL и подключением к базе данных MySQL. Кажется, все это работает, пока я не пытаюсь получить данные, извлеченные из базы данных, для GraphQL, чтобы иметь возможность что-то с ним делать.
Здесь у нас есть приложение. js файл , которая является отправной точкой бэкэнда. Предположим, что все импорта и объявления действительны.
app.use('/api', graphql({
schema: buildSchema(schema),
rootValue: resolvers,
graphiql: true
}));
Значение rootValue выглядит следующим образом.
const resolvers = {
regions: () => {
var a = manager.getRegions();
console.log("a: " + a);
return a;
}
};
Объект менеджера. У меня есть объект менеджера, если я хочу изменить тип базы данных в будущем.
const manager = {
getRegions : function() {
console.log("getRegions entered...");
return processQuery("regions");
}
};
Наконец, по сценарию MySQL мы имеем.
const processQuery = (query) => {
var res = null;
switch (query) {
case 'regions':
default:
db.query(SELECT_REGIONS_QUERY, (err, rows) => {
if (err) {
throw err;
} else {
res = JSON.stringify(rows);
console.log("Stringify: " + res);
}
});
}
return res;
}
Я прочитал множество на страницах и даже сообщениях о стеке потока о Promise, функциях обратного вызова и async / await, но ни один (по крайней мере, из-за предпринятых мною попыток кода), кажется, не делает распечатку в rootValue распечатанной последней ...
Я видел, что реализация выполнена Academind, который использует MongoDB вместо этого, и ему, кажется, не нужно заботиться об этой проблеме. Есть идеи, как это решить? Спасибо!