首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FaunaDB应用程序返回401,但凭据没有问题

FaunaDB应用程序返回401,但凭据没有问题
EN

Stack Overflow用户
提问于 2021-07-22 19:31:47
回答 1查看 620关注 0票数 6

我想尝试一下FaunaDB,所以我做了一个NodeJS应用程序。我遵循了一个教程,该教程制作了一个类似twitter的应用程序。然而,当我尝试访问数据库时,我收到了403条未授权消息。我已经检查了我的安全密钥,但我仍然得到相同的错误。任何帮助都将不胜感激。

.env文件:

代码语言:javascript
复制
KEY=randomString
PORT=5000

index.js:

代码语言:javascript
复制
require("dotenv").config();
const app = require("express")();
const faunadb = require("faunadb");

const client = new faunadb.Client({
    secret: process.env.KEY,
});

const {
    Paginate,
    Get,
    Select,
    Match,
    Index,
    Create,
    Collection,
    Lambda,
    Var,
    Join,
    Ref,
} = faunadb.query;

app.listen(5000, () => console.log(`API on http://localhost:${process.env.PORT}`));

app.get("/tweet/:id", async (req, res) => {
    try {
        const doc = await client.query(
            Get(
                Ref(
                    Collection("tweets"),
                    req.params.id
                )
            )
        )
        res.send(doc);

    } catch (err) {
        res.send(err)
    }
});

错误消息:

代码语言:javascript
复制
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 853
ETag: W/"355-EPYXYAwyDrJxa8vWUbY5JYPY+pw"
Date: Thu, 22 Jul 2021 11:12:16 GMT
Connection: close

{
  "name": "Unauthorized",
  "message": "unauthorized",
  "description": "Unauthorized",
  "requestResult": {
    "method": "POST",
    "path": "",
    "query": null,
    "requestRaw": "{\"create\":{\"collection\":\"test\"},\"params\":{\"object\":{\"data\":{\"object\":{\"testField\":\"testValue\"}}}}}",
    "requestContent": {
      "create": {
        "collection": "test"
      },
      "params": {
        "object": {
          "data": {
            "object": {
              "testField": "testValue"
            }
          }
        }
      }
    },
    "responseRaw": "{\"errors\":[{\"code\":\"unauthorized\",\"description\":\"Unauthorized\"}]}",
    "responseContent": {
      "errors": [
        {
          "code": "unauthorized",
          "description": "Unauthorized"
        }
      ]
    },
    "statusCode": 401,
    "responseHeaders": {
      ":status": 401,
      "www-authenticate": "Basic realm=\"Unauthorized\"",
      "x-txn-time": "1626952335964976",
      "x-faunadb-build": "070821.200951-e596d0a",
      "content-length": "65",
      "content-type": "application/json;charset=utf-8"
    },
    "startTime": 1626952335231,
    "endTime": 1626952336270
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-23 21:12:44

如下所示实例化客户端:

代码语言:javascript
复制
const client = new faunadb.Client({
  secret: process.env.KEY,
});

您正在应用一些默认参数,就像您以这种方式编写代码一样(我只指定了最重要的参数):

代码语言:javascript
复制
const client = new faunadb.Client({
  secret: process.env.KEY,
  domain: 'db.fauna.com',
  scheme: 'https',
});

如果您使用的是美国区域组、欧盟区域组或预览环境,则"db.fauna.com“默认域将不适用于您。

因此,您需要在构造函数中显式地提供域参数。

对于美国区域组:

代码语言:javascript
复制
const client = new faunadb.Client({
  secret: process.env.KEY,
  domain: 'db.us.fauna.com',
  scheme: 'https',
});

对于欧盟地区组:

代码语言:javascript
复制
const client = new faunadb.Client({
  secret: process.env.KEY,
  domain: 'db.eu.fauna.com',
  scheme: 'https',
});

对于预览:

代码语言:javascript
复制
const client = new faunadb.Client({
  secret: process.env.KEY,
  domain: 'db.fauna-preview.com',
  scheme: 'https',
});

您可以在文档中阅读有关区域组的更多信息:https://docs.fauna.com/fauna/current/api/fql/region_groups

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68484082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档