Сервер Apollo и MySQL: Как получить данные непосредственно из базы данных?

#javascript #mysql #node.js #graphql #apollo-server

Вопрос:

в настоящее время я пишу API GraphQL с ApolloServer/NodeJS. У меня есть база данных MySQL. Поскольку я новичок в этой теме, я понятия не имею, как я могу получать данные непосредственно из своей базы данных. Мой api отправляет клиенту информацию о статье (это единственная цель моего api). Клиент может выполнить поиск по определенной статье с помощью идентификатора (каждая статья/продукция имеет определенный идентификатор в базе данных. Идентификатор, который вводит клиент, следует сравнить с идентификатором в базе данных. Поэтому, если id = 1, то api должен следить за статьей, у которой в базе данных есть id = 1, и отправляет клиенту запрошенную информацию об ЭТОЙ статье. (Я знаю, что это может быть лучше с PHP, но у меня есть некоторые проблемы с PHP). Но я не знаю, как я могу записать это в свой решатель.

Вот мой решатель:

 const models = require('../models');

module.exports = {
    Query: {
        article: (parent, {id}) => {
                return models.articledata.find(
                    (c) => c.id == id
                );
        }
    },

    Node: {
        __resolveType(node) {
            if(node.toObject().name){
                return 'Article';
            }
        }
    }
}
 

Вот мои модели:

 let articledata = [{
    id: 1,
    name: 'title',
    description: 'Beispiel',
    imgs: 'www.test.de/img',
    btnLink: 'shoplink',
    headline: 'Spicy das neue Spiel',
    introduction: 'Beispiel',
    definition: 'Beispiel',
    tutorial: 'Beispiel',
    specsText: 'Beispiel',
    endText: 'Beispiel',
    age: 12,
    duration: 30,
    players: 12,
    category: 'Beispiel',
    designer: 'Beispiel',
    language: 'Deutsch',
    releaseDate: 2020,
    topic: 'Beispiel',
}];

module.exports = { articledata };
 

И вот мой index.js:

 const { ApolloServer } = require('apollo-server');

const schema = require('./schema');
const resolvers = require('./resolvers');

const server = new ApolloServer({
    typeDefs: schema,
    resolvers,
    dataSources: () => {
        articleAPI: new ArticleAPI()
    }
})

//The listen-method launches a web server
server.listen().then(({ url }) => {
    console.log('Server ready at ${url}');
});
 

Конечно, я искал в Интернете, но, похоже, у меня ничего не получается. Я очень рад вашей помощи!!

Ответ №1:

Вы ознакомились с документацией Apollo Server? Здесь есть много полезной информации о подключении источников данных к вашему серверу.


Здесь есть раздел о соединениях SQL. В документации отмечается, что Apollo прямо сейчас не предоставляет выделенные SQL-соединения, но показывает, как их создать, на примере.

Комментарии:

1. Я уже читал это, но это просто работает с данными, которые записаны непосредственно в коде. Но мои полные данные находятся в моей базе данных mysql. Возможно ли заменить данные в моделях переменными? Затем переменные поступают из php-файла, который предоставляет мне данные, и я внедряю их в модели?