Connessione a MongoDB in Fiber
In questo articolo vediamo come connetterci ad un db MongoDB in Fiber.
Faremo una sola rotta per l'interrogazione di una tabella, che si occuperà anche di creare dei dati di esempio.
Per fare dei test ho messo anche una riga che cancella ogni volta i dati, mi raccomando di toglierla!!
Prima di tutto installiamo ciò che ci occorre:
go get go.mongodb.org/mongo-driver/mongo
go get go.mongodb.org/mongo-driver/mongo/options
go get github.com/gofiber/fiber/v2
Qui sotto un pò di codice:
package main
import (
"context"
"fmt"
"os"
"time"
"github.com/gofiber/fiber/v2"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
var collection *mongo.Collection
func main() {
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, clientOptions)
if err != nil {
fmt.Println(err)
os.Exit(0)
}
collection = client.Database("testdb").Collection("persone")
// PER TEST!!
collection.Drop(ctx)
insertSampleDocuments(ctx)
app := fiber.New()
app.Get("/persone", func(c *fiber.Ctx) error {
cursor, err := collection.Find(context.Background(), bson.D{})
if err != nil {
return c.Status(500).SendString("Errore nella query: " + err.Error())
}
defer cursor.Close(context.Background())
var results []bson.M
if err := cursor.All(context.Background(), &results); err != nil {
return c.Status(500).SendString("Errore nella lettura dei dati")
}
return c.JSON(results)
})
app.Listen(":3000")
}
func insertSampleDocuments(ctx context.Context) {
doc1 := bson.D{
{"email", "luca@example.com"},
{"nome", "Luca"},
{"cognome", "Rossi"},
}
doc2 := bson.D{
{"email", "anna@example.com"},
{"attivita", bson.A{"calcio", "pittura", "lettura"}},
}
doc3 := bson.D{
{"nome", "Marco"},
{"cognome", "Bianchi"},
{"codice_fiscale", "MRCBNC90A01H501Z"},
}
_, err := collection.InsertMany(ctx, []interface{}{doc1, doc2, doc3})
if err != nil {
fmt.Println(err)
os.Exit(0)
}
}
Enjoy!
go fiber mongodb
Commentami!