Why
SPA and Mobile App need just one single endpoint to graphql.
This way can not implement subscription with ws backend. I think I don't need it because firestore will resolve it.
What I will not write in this article...
- How to deploy to firebase
- GraphQL Server implementation
- webpack / npm install / package.json
functions code
functions/index.js
const functions = require('firebase-functions')
const express = require('express')
const { graphqlExpress } = require('apollo-server-express')
const bodyParser = require('body-parser')
const { makeExecutableSchema } = require('graphql-tools')
const schema = makeExecutableSchema({
typeDefs: [/* Your schema.graphql */],
resolvers: {/* Your resolver */}
})
const server = express().use(
bodyParser.json(),
graphqlExpress({ schema, context: {} })
)
exports.graphql = functions.https.onRequest(server)
Send request to graphql
At first you need firebase deploy
Write your firebase.rules to proxy graphql endpoint
{
"functions": {
"source": "functions"
},
"hosting": {
"rewrites": [
{
"source": "/api/graphql",
"function": "graphql"
}
]
}
}
Run firebase serve
on your lacal and request query by apollo client.
import 'isomorphic-fetch'
import { ApolloClient } from 'apollo-client'
import { HttpLink } from 'apollo-link-http'
import { InMemoryCache } from 'apollo-cache-inmemory'
import gql from 'graphql-tag'
const client = new ApolloClient({
link: new HttpLink({ uri: 'http://localhost:5000/api/graphql' }),
cache: new InMemoryCache()
})
client.query({
query: gql`<your query>`
}).then(ret => {
console.log(ret)
})
CAUTION:2017/11/27 I have a problem about apollo-link so I add work arround to node_modules directly. https://github.com/apollographql/apollo-link/issues/248
Top comments (0)