使用 AWS Amplify 和 App Sync 与使用 Mongodb 的现有节点服务器

Posted

技术标签:

【中文标题】使用 AWS Amplify 和 App Sync 与使用 Mongodb 的现有节点服务器【英文标题】:Use AWS Amplify and App Sync with existing Node Server using Mongodb 【发布时间】:2019-10-18 00:17:51 【问题描述】:

目前,我正在使用 React-Native 开发本机应用程序。我决定使用 AWS Amplify,因为它具有实时更新和身份验证功能。

我还有一个在带有 Epxress 服务器的 Node.js 上运行的 Web 应用程序。此 Web 应用程序连接到 Mongo 数据库。

我的大问题是我想让我的所有 aws amplify 查询运行到我现有的 MongoDb 而不是 AWS AppSync 提供的新 dynamoDb 数据库,但不幸的是我不知道从哪里开始。这对于在我现有的 Web 应用程序中轻松添加身份验证也特别有用。

我的第一个想法是在一个新的节点 js 服务器中创建我的所有 API 端点,并对这些 API 端点进行应用同步调用,但我不确定如何在现有服务器上实现调用端点(以及这个似乎有点违背“无服务器”的想法)

我的另一个想法来自这个:Can AWS App-Sync be used without dynamoDB

这表明使用 AWS Lambda 将我的数据“传输”到现有的 mongodb,但我不确定这意味着什么。

TL;DR - 在将 AWS Amplify 与 AppSync 结合使用时,我希望能够查询现有的 Mongodb 而不是使用 DynamoDb。

我希望这足够清楚,听起来不像我在漫无边际。提前致谢!

【问题讨论】:

【参考方案1】:

我建议使用 HTTP 数据源连接到您的 MongoDB 后端或 Lambda 函数。以下是两者的入门教程:

https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-http-resolvers.html https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-lambda-resolvers.html

如果您采用 Lambda 路线,则可以在 Amplify CLI 中利用 GraphQL 转换器的新 @function 功能:https://aws-amplify.github.io/docs/cli/graphql#function

【讨论】:

谢谢!我最终为我的 GraphQL Schema 使用了 HTTP 数据源。老实说,我对 AppSync、GraphQL 和 Amplify 是如何协同工作的没有最好的理解。经过几天的努力,事情开始变得有意义了:)

以上是关于使用 AWS Amplify 和 App Sync 与使用 Mongodb 的现有节点服务器的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 AWS Amplify 注册表单上添加选择输入类型吗?

aws-amplify-react 和 @aws-amplify/ui-react 有啥区别?

使用 Auth0 进行 aws-amplify

为啥 AWS amplify 无法识别更新的节点版本?

使用 AWS Amplify 和 AWS Cognito 进行数据特定授权

AWS Amplify and React - 找不到模块:无法解析“@aws-amplify/analytics”