node.js - node - Firebase y lógica de backend
instalar firebase en windows (3)
Soy usuario de parse.com y ahora busco otro servicio. ¿Cómo puedo escribir la lógica de back end en firebase?
Digamos que quiero validar todos los valores en el lado del servidor, o activar cosas. Pensé en una solución, pero quiero saber la forma recomendada.
yo pienso que
- crea un servidor nodejs, que usa express.
- crear middlewares para manejar la lógica.
- enviar solicitud de descanso desde la aplicación, que activa los middlewares
- use el sdk de nodejs de firebase para actualizar los valores de acuerdo con los parámetros de la solicitud http.
- E implemente en el controlador de la aplicación firebase que escucha los cambios
su algo más simple? En el análisis utilicé el código de la nube, quiero que la lógica no esté en el lado del cliente sino en el lado del servidor.
Esto es lo que haría:
- Valide todas las entradas con las reglas ".validate" . No se necesita servidor para eso.
- Si tiene tareas que ejecutar, use Firebase Queue , un bot para ejecutar las tareas y ya está.
Si no haces el último, puedes tener dos problemas:
-
Si intenta usar el diagrama que publicó, será un poco complicado obtener el objeto de autenticación en el servidor (pero no imposible). Continúe si no necesita validar al usuario para permitir la solicitud.
-
Si usa solo la aplicación Firebase normal para escuchar los cambios y responder (editando el objeto, por ejemplo, como el código de ejemplo de Frank van Puffelen), es posible que tenga problemas de escalabilidad. Una vez que su back-end se escala a dos (o más) instancias, una edición de Firebase activará la tarea en todas ellas. Cada instancia notará que hubo un cambio, luego ejecutará la misma tarea una vez cada una, agregará / reemplazará el objeto de respuesta una vez cada una e intentará eliminar el objeto de solicitud una vez cada una.
Usar Firebase Queue evita estos dos problemas.
2017
Hoy Google anunció Cloud Functions para Firebase https://firebase.google.com/features/functions/
Esta es una gran solución para las arquitecturas y la lógica de back-end en Firebase.
Actualización (10 de marzo de 2017) : Si bien la arquitectura que describo a continuación sigue siendo válida y se puede usar para combinar Firebase con cualquier infraestructura existente, Firebase acaba de lanzar Cloud Functions para Firebase , que le permite ejecutar funciones de JavaScript en los servidores de Google en respuesta a Eventos de Firebase (como cambios en la base de datos, usuarios que inician sesión y mucho más).
Las arquitecturas comunes de las aplicaciones de Firebase están bastante bien definidas en esta publicación de blog ¿Dónde encaja Firebase en su aplicación? .
La arquitectura que propone es la más cercana a la arquitectura 3, donde su código del lado del cliente se comunica directamente con Firebase y con su servidor node.js directamente.
También le recomiendo que considere la opción 2, donde toda la interacción entre los clientes y el servidor se ejecuta a través de Firebase. Un gran ejemplo de este tipo de arquitectura es la integración de búsqueda de Flashlight . Los clientes escriben sus consultas de búsqueda en la base de datos de Firebase. El servidor escucha dichas solicitudes, ejecuta la consulta y escribe la respuesta en la base de datos. El cliente espera esa respuesta.
Un esquema simple para este servidor podría ser:
var ref = new Firebase(''https://yours.firebaseio.com/searches'');
ref.child(''requests'').on(''child_added'', function(requestSnapshot) {
// TODO: execute your operation for the request
var responseRef = ref.child(''responses'').child(requestSnapshot.key());
responseRef.set(result, function(error) {
if (!error) {
// remove the request, since we''ve handled it
requestSnapshot.ref().remove();
}
});
})
Con este último enfoque, el cliente nunca habla directamente con su servidor, lo que elimina todo tipo de problemas potenciales de los que debe preocuparse. Por esta razón, a veces me refiero a ellos como "bots", en lugar de servidores.