Connessione a FaunaDB con Express.js

Mattepuffo's logo
Connessione a FaunaDB con Express.js

Connessione a FaunaDB con Express.js

FaunaDB è un database NoSQL in cloud.

Ha a disposizione anche un piano gratuito che basta e avanza per molte applicazioni.

Volendo supporta GraphQL, ma io sto usando il linguaggio FQL.

Devo dire che in generale, rispetto ad altre alternative del genere, mi piace; ma manca di una buona documentazione per i vari linguaggi.

Oggi vediamo come usarlo con Javascript ed Express.js.

Prima di tutto installate la libreria:

npm install ---save faunadb

Qui sotto il codice Javascript:

const express = require('express');
const router = express.Router();
const faunadb = require('faunadb');
const q = faunadb.query;

const client = new faunadb.Client({
    secret: 'API-KEY'
});

router.get('/', function (req, res, next) {
    console.clear();

    client.query(
        q.Map(
            q.Paginate(q.Match(q.Index('all_titoli'))),
            q.Lambda('X', q.Get(q.Var('X')))
        ))
        .then((ret) => {
            ret.data.forEach((item) => {
                console.log(item);
            });

            return res.json(ret.data);
        })
        .catch((err) => {
            return res.json(err);
        });
});

router.get('/add', function (req, res, next) {
    console.clear();

    client.query(
        q.Create(
            q.Collection("musica"), {
                data: {
                    "titolo": "titolo3",
                    "autore": "autore3"
                }
            }
        )
    ).then((ret) => {
        console.log(ret);
    }).catch((err) => console.error('Error: %s', err));
});

module.exports = router;

Considerazioni:

  • l'API-KEY la dovete creare nel vostro pannello di controllo
  • all_titolo è un indice che sta ad indicare che vogliamo visualizzare tutti i records; gli indici li dovete creare voi nel vostro pannello, ed indicare a quale collezione fa riferimento
  • dal server invio tutto il JSON; l'elaborazione dovrete farla poi lato client

Enjoy!


Condividi

Commentami!