How to update schema without restarting service











up vote
0
down vote

favorite














My program uses apollo-server-koa as graphql service and I want to update schema dynamically. For example:

- When user uploads data to server, the schema also need to be updated but not restarting service.

I read schema transform and schema stitching but these don't meet my requirement.

Anyone can give me an advice.

Thank you so much!










share|improve this question






















  • In particular case, I want to update both a typedef and a resolver
    – Huongnt
    Nov 8 at 17:06










  • Apollo doesn't support updating the schema dynamically. If you want to do that, you'd need to set up your own middleware, recreate the schema each request and call graphql's execute function yourself.
    – Daniel Rearden
    Nov 8 at 17:13















up vote
0
down vote

favorite














My program uses apollo-server-koa as graphql service and I want to update schema dynamically. For example:

- When user uploads data to server, the schema also need to be updated but not restarting service.

I read schema transform and schema stitching but these don't meet my requirement.

Anyone can give me an advice.

Thank you so much!










share|improve this question






















  • In particular case, I want to update both a typedef and a resolver
    – Huongnt
    Nov 8 at 17:06










  • Apollo doesn't support updating the schema dynamically. If you want to do that, you'd need to set up your own middleware, recreate the schema each request and call graphql's execute function yourself.
    – Daniel Rearden
    Nov 8 at 17:13













up vote
0
down vote

favorite









up vote
0
down vote

favorite













My program uses apollo-server-koa as graphql service and I want to update schema dynamically. For example:

- When user uploads data to server, the schema also need to be updated but not restarting service.

I read schema transform and schema stitching but these don't meet my requirement.

Anyone can give me an advice.

Thank you so much!










share|improve this question















My program uses apollo-server-koa as graphql service and I want to update schema dynamically. For example:

- When user uploads data to server, the schema also need to be updated but not restarting service.

I read schema transform and schema stitching but these don't meet my requirement.

Anyone can give me an advice.

Thank you so much!







graphql apollo-server






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 8 at 16:56









Huongnt

113




113












  • In particular case, I want to update both a typedef and a resolver
    – Huongnt
    Nov 8 at 17:06










  • Apollo doesn't support updating the schema dynamically. If you want to do that, you'd need to set up your own middleware, recreate the schema each request and call graphql's execute function yourself.
    – Daniel Rearden
    Nov 8 at 17:13


















  • In particular case, I want to update both a typedef and a resolver
    – Huongnt
    Nov 8 at 17:06










  • Apollo doesn't support updating the schema dynamically. If you want to do that, you'd need to set up your own middleware, recreate the schema each request and call graphql's execute function yourself.
    – Daniel Rearden
    Nov 8 at 17:13
















In particular case, I want to update both a typedef and a resolver
– Huongnt
Nov 8 at 17:06




In particular case, I want to update both a typedef and a resolver
– Huongnt
Nov 8 at 17:06












Apollo doesn't support updating the schema dynamically. If you want to do that, you'd need to set up your own middleware, recreate the schema each request and call graphql's execute function yourself.
– Daniel Rearden
Nov 8 at 17:13




Apollo doesn't support updating the schema dynamically. If you want to do that, you'd need to set up your own middleware, recreate the schema each request and call graphql's execute function yourself.
– Daniel Rearden
Nov 8 at 17:13












1 Answer
1






active

oldest

votes

















up vote
0
down vote













I do this with apollo-server-express@1.3.2. I haven't converted over to 2 yet, and I'm not doing koa, but it'd be roughly the same, I assume. If not, hopefully it at least helps.



const { graphqlExpress } = require('apollo-server-express')
let schema = loadRemoteSchemas() // this loads it on start-up

app.use(async (req, res) => {
return {
schema: await schema,
}
}

app.use('refresh', async (req, res) => {
// some middleware that does stuff and changes the `schema` pointer
})





share|improve this answer





















  • I know this but my project use apollo server 2
    – Huongnt
    2 hours ago










  • But in your solution, i found it performance is not good because server have to rebuild schema for each request
    – Huongnt
    2 hours ago











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














 

draft saved


draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53212575%2fhow-to-update-schema-without-restarting-service%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes








up vote
0
down vote













I do this with apollo-server-express@1.3.2. I haven't converted over to 2 yet, and I'm not doing koa, but it'd be roughly the same, I assume. If not, hopefully it at least helps.



const { graphqlExpress } = require('apollo-server-express')
let schema = loadRemoteSchemas() // this loads it on start-up

app.use(async (req, res) => {
return {
schema: await schema,
}
}

app.use('refresh', async (req, res) => {
// some middleware that does stuff and changes the `schema` pointer
})





share|improve this answer





















  • I know this but my project use apollo server 2
    – Huongnt
    2 hours ago










  • But in your solution, i found it performance is not good because server have to rebuild schema for each request
    – Huongnt
    2 hours ago















up vote
0
down vote













I do this with apollo-server-express@1.3.2. I haven't converted over to 2 yet, and I'm not doing koa, but it'd be roughly the same, I assume. If not, hopefully it at least helps.



const { graphqlExpress } = require('apollo-server-express')
let schema = loadRemoteSchemas() // this loads it on start-up

app.use(async (req, res) => {
return {
schema: await schema,
}
}

app.use('refresh', async (req, res) => {
// some middleware that does stuff and changes the `schema` pointer
})





share|improve this answer





















  • I know this but my project use apollo server 2
    – Huongnt
    2 hours ago










  • But in your solution, i found it performance is not good because server have to rebuild schema for each request
    – Huongnt
    2 hours ago













up vote
0
down vote










up vote
0
down vote









I do this with apollo-server-express@1.3.2. I haven't converted over to 2 yet, and I'm not doing koa, but it'd be roughly the same, I assume. If not, hopefully it at least helps.



const { graphqlExpress } = require('apollo-server-express')
let schema = loadRemoteSchemas() // this loads it on start-up

app.use(async (req, res) => {
return {
schema: await schema,
}
}

app.use('refresh', async (req, res) => {
// some middleware that does stuff and changes the `schema` pointer
})





share|improve this answer












I do this with apollo-server-express@1.3.2. I haven't converted over to 2 yet, and I'm not doing koa, but it'd be roughly the same, I assume. If not, hopefully it at least helps.



const { graphqlExpress } = require('apollo-server-express')
let schema = loadRemoteSchemas() // this loads it on start-up

app.use(async (req, res) => {
return {
schema: await schema,
}
}

app.use('refresh', async (req, res) => {
// some middleware that does stuff and changes the `schema` pointer
})






share|improve this answer












share|improve this answer



share|improve this answer










answered yesterday









Dan Crews

1,4891019




1,4891019












  • I know this but my project use apollo server 2
    – Huongnt
    2 hours ago










  • But in your solution, i found it performance is not good because server have to rebuild schema for each request
    – Huongnt
    2 hours ago


















  • I know this but my project use apollo server 2
    – Huongnt
    2 hours ago










  • But in your solution, i found it performance is not good because server have to rebuild schema for each request
    – Huongnt
    2 hours ago
















I know this but my project use apollo server 2
– Huongnt
2 hours ago




I know this but my project use apollo server 2
– Huongnt
2 hours ago












But in your solution, i found it performance is not good because server have to rebuild schema for each request
– Huongnt
2 hours ago




But in your solution, i found it performance is not good because server have to rebuild schema for each request
– Huongnt
2 hours ago


















 

draft saved


draft discarded



















































 


draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53212575%2fhow-to-update-schema-without-restarting-service%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Schultheiß

Verwaltungsgliederung Dänemarks

Liste der Kulturdenkmale in Wilsdruff