AstraDB GET 请求失败
Posted
技术标签:
【中文标题】AstraDB GET 请求失败【英文标题】:AstraDB failed GET request 【发布时间】:2021-11-05 15:27:51 【问题描述】:我一直在开发 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),
;
;
【问题讨论】:
【参考方案1】:我找到了解决办法。出于某种原因,我试图使用应用程序令牌调用 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 和密码。
【讨论】:
以上是关于AstraDB GET 请求失败的主要内容,如果未能解决你的问题,请参考以下文章
Axios GET请求在我的本地版本上运行,但在Heroku上失败-未捕获(承诺)错误:请求失败,状态码为500