【发布时间】: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