【问题标题】:TypeGraphQl: Usage with Netlify Functions/AWS LambdaTypeGraphQl:使用 Netlify 函数/AWS Lambda
【发布时间】:2021-08-04 19:15:26
【问题描述】:

经过一天的工作、阅读文档和示例,最终我终于能够让 TypeQL 与 Netlify Functions / AWS Lambda 一起使用,最后绝望的蛮力。

我在这里与其他人分享我的工作代码(或供我自己的 :P 将来参考),因为它包含一些违反直觉的关键字用法。

正常方法

我在使用simple example 时遇到的错误是:

Your function response must have a numerical statusCode. You gave: $ undefined

我当然搜索了这些问题,但没有一个建议的解决方案对我有用。

【问题讨论】:

    标签: aws-lambda graphql netlify typegraphql netlify-cli


    【解决方案1】:

    工作代码

    import 'reflect-metadata'
    import { buildSchema } from 'type-graphql'
    import { ApolloServer } from 'apollo-server-lambda'
    import { RecipeResolver } from 'recipe-resolver'
    
    async function lambdaFunction() {
      const schema = await buildSchema({
        resolvers: [RecipeResolver],
      })
    
      const server = new ApolloServer({
        schema,
        playground: true,
      })
    
      // !!! NOTE: return (await ) server.createHandler() won't work !
      exports.handler = server.createHandler()
    }
    
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! NOTE: weird but only way to make it work with
    // AWS lambda and netlify functions (netlify dev)
    // also needs a reload of the page (first load of playground won't work)
    lambdaFunction()
    // exports.handler = lambdaFunction wont work
    // export { lambdaFunction as handler } wont work
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    
    

    我也从这个简单的例子中得到了一些反射错误

    Unable to infer GraphQL type from TypeScript reflection system. You need to provide explicit type for argument named 'title' of 'recipe' of 'RecipeResolver
    

    所以我必须弄清楚如何将显式类型添加到@Arg

    // previous:
    // recipe(@Arg('title') title: string)
    // fixed:
       recipe( @Arg('title', (type) => String) title: string
    

    【讨论】:

    • 感谢您分享此内容。您是否找到了一种将类型显式添加到 typegql 对象的方法?在包含大量对象的现有应用程序中执行此操作非常麻烦。也许装饰器不工作?不确定 netlify lambda 是否正在读取我的 tsconfig 文件
    • 也许检查 type-graphql 问题。显然,由于 TS 反射系统的限制,您需要冗余定义类型(在装饰器和类字段中)。
    • @Aerodynamic 你有没有在一个项目中使用过无服务器的graphql?是动态页面/SSR,还是只是静态页面?想知道您是否继续使用 TypeGraphQL 和无服务器,以及是否值得为节省/可扩展性所做的努力,或者您是否使用了不同的提供程序/供应商/libs 组合。
    猜你喜欢
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2020-05-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    相关资源
    最近更新 更多