Quería probar FaunaDB, así que hice una aplicación NodeJS. Seguí un tutorial que hizo una aplicación como twitter. Sin embargo, cuando intento acceder a la base de datos, recibo un mensaje 403 no autorizado. Revisé mis claves de seguridad, pero sigo recibiendo el mismo error. Cualquier ayuda sería apreciada.
Archivo .env:
KEY=randomString PORT=5000índice.js:
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) } });Mensaje de error:
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 } }Instanciando al cliente de esta manera:
const client = new faunadb.Client({ secret: process.env.KEY, });está aplicando algunos parámetros predeterminados, como si escribiera su código de esta manera (estoy especificando solo los más importantes):
const client = new faunadb.Client({ secret: process.env.KEY, domain: 'db.fauna.com', scheme: 'https', });En caso de que esté utilizando el grupo de regiones de EE. UU., el grupo de regiones de la UE o el entorno de vista previa, el dominio predeterminado "db.fauna.com" no funcionará para usted.
Por lo tanto, debe proporcionar un parámetro de dominio explícitamente en el constructor.
Para el grupo de la región de EE. UU.:
const client = new faunadb.Client({ secret: process.env.KEY, domain: 'db.us.fauna.com', scheme: 'https', });Para el grupo de regiones de la UE:
const client = new faunadb.Client({ secret: process.env.KEY, domain: 'db.eu.fauna.com', scheme: 'https', });Para vista previa:
const client = new faunadb.Client({ secret: process.env.KEY, domain: 'db.fauna-preview.com', scheme: 'https', });Puede leer más sobre los grupos de regiones en los documentos: https://docs.fauna.com/fauna/current/api/fql/region_groups