В настоящее время я изучаю GraphQL и пытаюсь создать API Firebase с GraphQL. Я следил за инструкциями на YouTube, делал те же шаги, что и парень из видео, за исключением того, что получаю сообщение об ошибке.

index.js

const functions = require('firebase-functions')
const admin = require('firebase-admin')
const express = require('express')
const { ApolloServer, gql } = require('apollo-server-express')
const serviceAccount = require('./permissions.json')

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: '...',
})

const typeDefs = gql`
    type Cat {
        name: String
        lifespan: String
        weight: String
        description: String
    }

    type Query {
        cats: [Cat]
    }
`

const resolvers = {
    Query: {
        cats: () => {
            return admin
                .database()
                .ref('cats')
                .once('value')
                .then((snap) => snap.val())
                .then((val) => Object.keys(val).map((key) => val[key]))
        },
    },
}

const app = express()
const server = new ApolloServer({ typeDefs, resolvers })

server.applyMiddleware({ app, path: '/', cors: true })

exports.graphql = functions.https.onRequest(app)

Я запускаю npm run serve и пробую выполнить запрос на сервере GraphQL. Затем я получаю следующую ошибку: Невозможно преобразовать undefined или null в объект . Я не могу найти в Интернете никакого решения, объясняющего, что я делаю неправильно. Я думаю, это как-то связано с частью моего кода Object.keys (..).

The error

Firebase Database

Кто-нибудь знает мою ошибку, вся помощь приветствуется!

1
Steven Soekha 17 Авг 2020 в 22:23

2 ответа

Лучший ответ

Проблема заключалась в том, что я добавил данные в неправильную базу данных. Я добавил данные в базу данных Cloud Firestore вместо того, чтобы добавлять их в базы данных реального времени.

0
Steven Soekha 17 Авг 2020 в 20:49

Поскольку возвращаемые данные равны NULL, отсюда и эта ошибка. Убедитесь, что у вас есть правильное соединение с firebase, а также правильный формат данных. Согласно логике извлечения данных, возвращаемый json должен быть в таком виде {"cats": [{"name": 'abcd'}, {"name": 'abcd'}, ...]}

0
Shreya Verma 17 Авг 2020 в 19:58