2

我在 MongoDB Atlas 中有一个测试数据库。使用 MongoDB Realm 服务,我已经能够为数据库设置 GraphQL 端点。

我可以使用他们的沙箱 (GraphiQL) 在内部运行查询。

图形

配置 API 密钥身份验证提供程序后...

api键

允许请求来源

...我能够从 Postman 外部运行查询,调用https://realm.mongodb.com/api/client/v2.0/app/<MY_APP_ID>/graphql.

邮差

但是,尝试使用 axios 进行相同的调用...

await axios({
  method: 'POST',
  url:
    'https://realm.mongodb.com/api/client/v2.0/app/<MY_APP_ID>/graphql',
  headers: {
    apiKey: '<MY_API_KEY>',
    'Content-Type': 'application/json',
  },
  data: {
    query: `
      {
        item {
          _id
          name
          description
        }
      }
    `
  }
})

...给出一个 CORS 错误。

cors错误

是否需要在 Realm 中配置某些内容或缺少的标头以允许从浏览器外部访问 GraphQL 端点?

4

1 回答 1

2

在MongoDB Realm 文档中发现Task Tracker (web) 教程后,我意识到了这个问题。我需要使用 Realm javascript SDK 使用我的应用 ID 和身份验证提供程序登录到 Realm。

您可以使用您在 Realm 仪表板中启用的任何身份验证提供程序(用户名/密码、API 密钥、Google 等),但它们都在登录时返回单个不记名令牌。此不记名令牌允许跨域查询GraphQL 端点。

我也崩溃了,决定安装 Apollo Client 来完成与端点的所有对话。我最终实现的 React 解决方案的源代码可以在这里找到。它使用 aRealmApp与 Realm 通信,并RealmApolloProvider使用适当的 Realm 身份验证令牌与 GraphQL 对话。

于 2020-09-11T04:29:20.867 回答