1

我一直在开发 TikTok 克隆应用程序。所以我用 Astra DB 创建了我的数据库,并在一个函数文件夹中设置了两个函数来测试我的帖子是否正常工作。我正在使用 netlify dev 来测试应用程序。但是当我重定向 http://localhost:8888/.netlify/functions/addData 我得到这个失败的获取请求错误

Request from ::1: GET /.netlify/functions/addData
Error: Request Failed: [object Object]
Stack Trace: Request failed with status code 401
    at axiosRequest (D:\tiktokclone\node_modules\@astrajs\rest\src\rest.js:126:11)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async AstraClient._request (D:\tiktokclone\node_modules\@astrajs\rest\src\rest.js:199:22)
    at async AstraClient.put (D:\tiktokclone\node_modules\@astrajs\rest\src\rest.js:263:12)
    at async AstraCollection._put (D:\tiktokclone\node_modules\@astrajs\collections\src\collections.js:69:22)
    at async Object.exports.handler (D:\tiktokclone\functions\addData.js:17:9)
Response with status 500 in 231 ms.

我完全不明白是什么原因造成的。我的 .env 文件夹中的所有凭据都是正确的。这是我用来发出请求的代码

const { createClient } = require("@astrajs/collections");

const collection = "posts";

exports.handler = async function (event, context, callback) {


  const astraClient = await createClient({
    astraDatabaseId: process.env.ASTRA_DB_ID,
    astraDatabaseRegion: process.env.ASTRA_DB_REGION,
    applicationToken: process.env.ASTRA_DB_APPLICATION_TOKEN,
});

  console.log(astraClient)
  console.log(collection)
  console.log('Hello')

  const posts = astraClient
    .namespace(process.env.ASTRA_DB_KEYSPACE)
    .collection(collection);

  try {
    await posts.create("a post", {
      title: "my first post",
    });

    return {
      statusCode: 200,
    };
  } catch (e) {
    console.error(e);
    return {
      statusCode: 500,
      body: JSON.stringify(e),
    };
  }
};

4

1 回答 1

2

我找到了解决办法。出于某种原因,我试图使用应用程序令牌调用 API,它给了我 401 错误。当我使用用户名和密码时,它起作用了。

 const astraClient = await createClient({
  astraDatabaseId: process.env.ASTRA_DB_ID,
  astraDatabaseRegion: process.env.ASTRA_DB_REGION,
  username: process.env.ASTRA_DB_USERNAME,
  password: process.env.ASTRA_DB_PASSWORD,

});

用户名是客户端 ID,密码是客户端密码。发生此错误是因为与 REST API 和 Document API 略有混淆。Astra DB 使用应用程序令牌来验证文档 API,而 REST API 使用客户端 ID 和密码。

于 2021-09-10T01:21:03.000 回答