Usar PocketBase — Backend de código abierto
Para ser precisos, cuándo debería usar Pocketbase en lugar de Firebase.
Bien, estás en el punto de la vida en el que tienes que construir un producto que requiere un backend. Ahora, hay muchas maneras de resolver el problema, como crear uno desde cero o elegir un servidor como proveedor de servicios como Firebase (GCP), Amplify (AWS), Supabase (código abierto) o nuestro tema de hoy PocketBase.
El artículo no comparará todos los proveedores de back-end como servicio (BaaS), sino que se centrará específicamente en Firebase y Pocketbase y qué más puede esperar de este artículo.
- Cuándo seleccionar Firebase y cuándo Pocketbase.
- Breve llegada de Pocketbase y formas de evitarlo
- Pocketbase como marco.
- Implementación de Pocketbase.
- Conclusión
base de fuego
“ Haz que tu aplicación sea lo mejor posible ”
He tenido experiencias positivas con Firebase y he creado y vendido con éxito productos con él. Por lo general, Firebase es una plataforma confiable y completa que ofrece una variedad de características útiles, que incluyen autenticación, una base de datos NoSQL en tiempo real, funciones personalizadas para lógica comercial, almacenamiento de archivos y hospedaje. También tiene un SDK del lado del cliente bien diseñado. y no podemos olvidar la facilidad de comenzar con firebase, que solo requiere unos pocos clics para configurar.
Una de las limitaciones de Firebase es que actualmente no ofrece consultas de agregación avanzadas como SUM o AVG. El equipo de Firebase introdujo recientemente la consulta COUNT, pero es posible que esto no satisfaga todas las necesidades de agregación.
Si su caso de uso requiere estas consultas, utilice Pocketbase.
Otro problema con Firebase es su extensibilidad limitada. Si bien ofrece servicios como funciones en la nube y extensiones para ayudar a cerrar la brecha, es posible que no sean tan flexibles como la extensibilidad de Pocketbase. En comparación, Pocketbase ofrece un mayor nivel de personalización y flexibilidad para crear API y rutas personalizadas.
Si su caso de uso requiere más extensibilidad, es decir, integraciones de terceros, lógica comercial personalizada, cumplimiento de transacciones, elija Pocketbase.
Firestore, la base de datos que usa Firebase, es una plataforma patentada y no proporciona ninguna herramienta para exportar o importar datos fuera de BigQuery. Esto puede dificultar la migración de datos hacia o desde Firestore, lo que puede causar problemas a los desarrolladores.
La migración de datos es la máxima prioridad cuando se utiliza Pocketbase.
base de bolsillo
“ Backend de código abierto para su próxima aplicación SaaS y móvil en 1 archivo ” escrito en Go.
Cosas disponibles listas para usar
- Base de datos en tiempo real impulsada por SQLite integrado en modo WAL.
- Autenticación con correo electrónico y OAuth2.
- Almacenamiento de archivos con S3.
- SDK de cliente para Dart y Javascript.
Si desea una experiencia más profunda con Pocketbase, puede considerar usar pockethost e implementarlo en fly.io. Esto le permitirá probar completamente Pocketbase y ver cómo funciona en un escenario del mundo real.
Poder verdadero
Se encuentra en el uso de Pocketbase como marco. De esta manera, puede tener todas las cosas buenas incluidas en la caja y flexibilidad para crear algo propio.
func main() {
app := pocketbase.New()
if err := app.Start(); err != nil {
log.Fatal(err)
}
}
Pocketbase ha hecho gran parte del trabajo pesado, por lo que no tiene que escribir tanto código cuando lo usa, lo que puede facilitar el desarrollo de API extensibles personalizadas.
Déjame mostrarte algunos ejemplos.
Ruta de API personalizada
Las consultas de agregación no son compatibles de fábrica, pero podemos escribir una ruta personalizada donde podemos ejecutar nuestra propia consulta SQL. Pocketbase detrás de la escena usa echo para que al crear rutas personalizadas podamos consultar la documentación de echo .
// inside main
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
e.Router.AddRoute(echo.Route{
Method: http.MethodGet,
Path: "/api/get_monthly_limit",
Handler: func(c echo.Context) error {
result := struct {
TotalLimit int `db:"totalLimit" json:"totalLimit"`
}{}
app.Dao().DB().Select("SUM(monthlyLimit) as totalLimit").From("categories").One(&result)
return c.JSON(http.StatusOK, result)
},
})
return nil
})
- La primera línea es la forma en que Pocketbase agrega cosas al marco que es mediante el uso
onBeforeServe - En segundo lugar, lo que queremos agregar es agregar una nueva ruta al enrutador de echo
- Ahora nuestra implementación específica comienza con es fácil de seguir.
Podemos enviar notificaciones usando firebase Admin sdk para Go .
Con dos pequeños pasos:
- Inicializar firebaseApp
- Configure una ruta personalizada o gancho que puede encontrar aquí .
// In the main
firebaseApp, err := initFirebaseApp()
func initFirebaseApp() (*firebase.App, error) {
opt := option.WithCredentialsFile("/etc/secret/service_account.json")
app, err := firebase.NewApp(context.Background(), nil, opt)
if err != nil {
return nil, err
}
return app, nil
}
ctx := context.Background()
messagingClient, _ := firebaseApp.Messaging(ctx)
e.Router.AddRoute(echo.Route{
Method: http.MethodPost,
Path: "/api/send_notification",
Handler: func(c echo.Context) error {
token := c.FormValue("token")
message := &messaging.Message{
Token: token,
Notification: &messaging.Notification{
Title: "hello",
Body: "Golang",
},
}
response, err := messagingClient.Send(ctx, message)
if err != nil {
return c.String(http.StatusPreconditionFailed, "Something went wrong")
}
return c.String(http.StatusOK, response)
},
})
app.RootCmd.AddCommand(&cobra.Command{
Use: "fetch_something",
Run: func(command *cobra.Command, args []string) {
log.Println("Fetched something !")
},
})
Despliegue
Si solo tiene una distribución de Linux, puede ejecutar go build main.go y se generará un ejecutable. Simplemente copie al servidor usando scp orsync.
// in your local machine
scp $pathToYourExecutable root@$yourServerIP:/home/
// after ssh-ing to your server
/home/$yourExcutable serve
Sin embargo, si cierra su terminal SSH, su servidor también se caerá. Para evitar que esto suceda, puede configurar un servicio systemd para mantener su servidor funcionando en segundo plano. Puede encontrar más información sobre cómo hacer esto en la documentación oficial .
Alternativamente, si está usando Windows, puede clonar el código fuente en el servidor, compilar el ejecutable y luego ejecutarlo usando systemd y nginx. Para hacer esto,
- Primero instale el lenguaje de programación Go.
- Luego, puede clonar el repositorio y construir el ejecutable usando el compilador Go.
- Finalmente, puede configurar systemd y nginx para mantener su servidor funcionando en segundo plano nuevamente con la misma documentación .
Pocketbase y Firebase son excelentes herramientas para crear e implementar rápidamente un producto mínimo viable o probar el ajuste del producto al mercado. Si bien pueden ser útiles para poner en marcha un producto rápidamente, es importante tener en cuenta que pueden no ser la mejor solución para proyectos a largo plazo y de gran escala. Si su aplicación experimenta un crecimiento explosivo, es posible que deba crear un backend personalizado desde cero o contratar a alguien para que lo haga por usted.
Es importante elegir las herramientas adecuadas para su proyecto, y las plataformas BAAS como Pocketbase y Firebase pueden ser excelentes opciones para comenzar rápidamente. Solo asegúrese de considerar el potencial de crecimiento futuro y la capacidad de migrar a un backend personalizado si es necesario. La tecnología es una herramienta para ayudarte a construir algo valioso, y depende de ti elegir la adecuada para tus necesidades.
Soy un geek técnico al que le gusta probar cosas nuevas y aprender a compartirlas con el mundo. Si tiene alguna sugerencia o se encuentra en dificultades, no dude en comunicarse en Twitter .
Hasta la proxima vez.

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































