javascript - AstraDB GET 请求失败

标签 javascript node.js reactjs datastax-astra

我一直在开发 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),
    };
  }
};

最佳答案

我找到了修复方法。由于某种原因,我尝试使用应用程序 token 调用 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,密码是客户端 secret 。发生此错误的原因是 REST API 和文档 API 略有混淆。 Astra DB 使用应用程序 token 来验证文档 API,而 REST API 使用客户端 ID 和密码。

关于javascript - AstraDB GET 请求失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69110130/

相关文章:

javascript - JsDoc:将参数类型定义为来自外部模块的类型

javascript - Angularjs 不更新 Angular 模板给出的标签

javascript函数使元素垂直居中

javascript - 我可以更改位于 react 组件中的 div 的不透明度状态吗?

javascript - 除了 .innerHTML 之外,还有哪些其他选项可以将 Javascript 生成的 HTML 插入 DOM?

mysql - Select Exists 在 mysql 中总是返回 true

node.js - mongo/Node 类型错误: callback is not a function on query

javascript - Express.js 路由器中的正则表达式

javascript - CSS 和 JavaScript 通过 React-router 打破 onEnter

reactjs - 使用 Typescript 时 React.memo 不可用?