如何解决无法将未定义或null转换为对象GraphQL
我目前正在学习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服务器上尝试查询。然后,我收到以下错误:无法将未定义或null转换为对象。我在网络上找不到任何解释我做错事情的解决方案。我认为它必须与我代码的Object.keys(..)部分有关。
有人知道我的错误吗,所有帮助都将受到赞赏!
解决方法
由于返回的数据为Null,因此会出现此错误。检查您与firebase的连接是否正确,数据格式是否正确。根据提取数据的逻辑,返回的json应该采用这种形式 {“ cats”:[{“ name”:'abcd'}, {“ name”:'abcd'}, ... ] }
,问题是我在错误的数据库中添加了数据。我将数据添加到Cloud Firestore数据库中,而不是将其添加到实时数据库中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。