【问题标题】:Cannot convert undefined or null to object GraphQL无法将 undefined 或 null 转换为对象 GraphQL
【发布时间】:2020-12-06 23:21:38
【问题描述】:

我目前正在学习 GraphQL,并尝试使用 GraphQL 制作 Firebase API。我按照 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(..) 部分有关。

有人知道我的错误吗,非常感谢所有帮助!

【问题讨论】:

  • 可能val 不是对象?检查它...` .then((snap) => {console.log(snap.val()); return snap.val();})` - API/服务器控制台
  • 是的 snap.val() 是 null 但我找不到原因。我按照本教程中的说明做了所有事情:medium.com/@lukepighetti/…

标签: javascript node.js firebase express graphql


【解决方案1】:

由于返回的数据为 Null,因此出现此错误。检查您是否与 firebase 有正确的连接,也有有效的数据格式。根据提取数据的逻辑,返回的json应该是这种形式 {“猫”:[{“名称”:'abcd'}, {“名称”:'abcd'}, ... ] }

【讨论】:

    【解决方案2】:

    问题是我在错误的数据库中添加了数据。我在 Cloud Firestore 数据库中添加了数据,而不是将其添加到实时数据库中。

    【讨论】:

      猜你喜欢
      • 2021-07-29
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 2022-06-22
      • 2023-02-06
      • 2021-12-07
      • 2020-08-15
      • 1970-01-01
      相关资源
      最近更新 更多