He estado evaluando Mongoose (un ORM para node.js que usa MongoDB para almacenamiento persistente).Cómo manejar las interrupciones de conexión Mongoose DB
Lo que me gustaría hacer es asegurarme de que la aplicación se pueda ejecutar cuando la base de datos no esté activa cuando se inicia la aplicación, y también maneja la base de datos de manera inteligente.
Actualmente mi aplicación de prueba que no funciona en cualquiera de los casos hace esto:
var mongoose_connection = mongoose.createConnection(DATABASE_URL, {server:{poolSize:4}});
Entonces utilizar esa conexión al hacer modelos.
En el caso en que el DB está inactivo al inicio de la aplicación, cualquier llamada a save() en las instancias falla silenciosamente sin error. Si la base de datos vuelve a aparecer, nunca se escriben.
Así que tendría que detectar que la conexión nunca sucedió y que la aplicación pueda decir eso en tiempo de ejecución para poder manejarlo de alguna manera.
Cuando el DB baja después de que la aplicación ha comenzado, las llamadas a save() aún no causan errores, pero están en cola y escritas cuando vuelve la base de datos.
Parece estar bien, excepto que me gustaría conectarme a la API para obtener eventos cuando la base de datos está inactiva y para consultar cuántos guardados están en cola. En algún momento podría tener tantos eventos en cola que me gustaría dejar de hacer otros nuevos y hacer que la aplicación retroceda.
¿Usted sabe sobre las escrituras seguras y getLastError() en mongo? –
Sí, y de acuerdo con la documentación de mangosta, el modo predeterminado para un esquema es seguro – justinhj