He estado trabajando en una aplicación de clonación de TikTok. Así que creé mi base de datos con Astra DB y configuré dos funciones dentro de una carpeta de funciones para probar si mis publicaciones funcionan. Estoy usando netlify dev para probar las aplicaciones. Pero cuando redirecciono http://localhost:8888/.netlify/functions/addData obtengo este error de solicitud fallida
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.No entiendo muy bien qué causa esto. Todas las credenciales dentro de mi carpeta .env eran correctas. Aquí está el código que usé para hacer la solicitud
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), }; } };Encontré una solución. Por alguna razón, estaba tratando de llamar a la API usando un token de aplicación y me estaba dando el error 401. Cuando usé nombre de usuario y contraseña funcionó.
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,});
el nombre de usuario es el ID del cliente y la contraseña es el secreto del cliente. Este error ocurrió debido a una ligera confusión con la API REST y la API de documentos. Astra DB usa el token de la aplicación para autenticar la API del documento, mientras que la API REST usa la ID y la contraseña del cliente.