gpt4 book ai didi

typescript - Azure函数: Use Apollo Azure handler in async function

转载 作者:行者123 更新时间:2023-12-03 04:49:02 25 4
gpt4 key购买 nike

我想将我的 apollo 处理程序包装到一个异步函数中,以便在执行处理程序函数之前执行一些检查。当我不使用异步函数但将函数导出为异步时,一切都工作正常,但始终返回空响应。

函数.json

{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
}
],
"scriptFile": "../dist/graphql/index.js"
}

设置:

    import { buildSchema } from 'type-graphql';
import { ApolloServer } from 'apollo-server-azure-functions';
import { Context, HttpRequest } from '@azure/functions';

import { resolvers } from '../src/graphql';
import { authChecker } from '../src/auth';

const schema = buildSchema({
resolvers,
authChecker,
});

const server = new ApolloServer({
schema,
context: ({ context }) => context, // directly use azure Context as Apollo context,
});

const handler = server.createHandler();

这有效

export default (context: Context, request: HttpRequest) => {
handler(context, request);
};

这总是返回 204,空响应

export default async (context: Context, request: HttpRequest) => {
// do async stuff: await ...

handler(context, request);
};

最佳答案

有两种方法可以从 Node.js Azure 函数返回数据:

在您的代码中,handlerapollo-server-azure-functions 包中的方法。它在内部调用 context.done() 将响应发送回 Azure 运行时。

但是由于 handler(context, request) 本身是常规函数调用,因此导出的顶级 async 函数无需等待其完成即可解析。

您可能希望从异步函数返回一个 Promise,当底层 apollo 服务器准备好发送响应时,该函数将得到解析。这是 example implementation .

关于typescript - Azure函数: Use Apollo Azure handler in async function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62556673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com