将 Firebase 与 GraphQL 集成:将 Firestore 作为上下文传递

问题描述 投票:0回答:1

我决定将 Firebase 集成到 GraphQL 中,并且在创建 ApolloServer 时将 firestore 作为上下文值传递,但是当我运行

loginUser
查询时,我在控制台中得到一个空对象:
{}

我已经阅读了 GraphQL 上下文文档,并尝试以不同的方式传递对象(通过 startStandaloneServer()...传递上下文),但我不断得到一个空对象。我知道

firestore
正在初始化,因为当我在启动
startStandaloneServer
时记录它并获得预期的对象时。

index.js

import { ApolloServer } from '@apollo/server'
import { startStandaloneServer } from '@apollo/server/standalone' // using startStandaloneServer to create standalone GraphQL server that does not require external web framework Express (whereas using applyMiddleware is used when integrating Apollo Server w/ existing Express.js app)
import { typeDefs } from "./schema/typedefs/TypeDefs.js";
import { resolvers } from './schema/resolver/Resolvers.js'
import 'firebase/app'

import { initializeApp } from 'firebase/app'
import { getFirestore } from "firebase/firestore";
import 'firebase/auth'

// Initialize Firebase
const firebaseConfig = {
    ...
};


const app = initializeApp(firebaseConfig)
const firestore = getFirestore(app)

const server = new ApolloServer({
    typeDefs,
    resolvers,
    context: return { firestore } // passing firestore as context
})

await startStandaloneServer(
    server,
    {
        port: 4000
    })
    .then(({ url }) => {
        console.log(`Server running at ${url}`);

    })

解析器.js

export const resolvers = {
    Query: {
        loginUser: async (_, { email }, ctx) => {
            console.log(ctx);
            return "String"

        }
    }
...}

package.json

  "dependencies": {
"@apollo/server": "^4.9.2",
"cors": "^2.8.5",
"dotenv": "^16.3.1",
"express": "^4.18.2",
"firebase": "^10.3.0",
"nodemon": "^3.0.1"

}

firebase graphql apollo-server
1个回答
0
投票

我真的想通了

await startStandaloneServer(server, {
    port: 4000,
    context: async () => ({
        firestore
    }),
});
© www.soinside.com 2019 - 2024. All rights reserved.