我决定将 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"
}
我真的想通了
await startStandaloneServer(server, {
port: 4000,
context: async () => ({
firestore
}),
});