Cómo cancelar sails.js lift con un gancho

Necesito realizar ciertas tareas de inicialización utilizando promesas al levantar mi aplicación Sails.js.

Si estas tareas fallan de alguna manera, la aplicación no debe continuar levantándose y debe registrar un error. Además, estas tareas pueden no completarse en un tiempo finito y predefinido (consulte la definición de gancho ).

Sin embargo, el sistema de gancho solo permite llamar a cb () cuando el gancho se ha completado con éxito, y parece que no hay ninguna forma en la que pueda hacer la aplicación:

  • falla, sin tiempo de espera ( hook: X: error )
  • no se puede continuar hasta que el gancho anterior haya tenido éxito o fallado definitivamente

¿Hay alguna manera de hacer esto?

En primer lugar, si las tareas de inicialización son específicas para su aplicación, es posible que solo pueda utilizar el bootstrap en lugar de un gancho. Llamar a la callback de arranque con un error como argumento provocará que Sails se rescate.

Si definitivamente necesita usar un gancho, puede forzar a Sails a salir de la misma manera: llamar a la callback desde el método de initialize del gancho con cualquier argumento que no sea nulo señalará una falla, y hará que Sails salga . Este es el caso de las aplicaciones Node en general: cada vez que se espera que llame a una callback, pase un valor que no sea nulo ya que el primer argumento señalará un error.

Por lo tanto, si la initialize su gancho inicia las tareas que necesita ejecutar, y no llama a cb() hasta que se completen, y llama a cb() en cualquier punto donde las tareas fallan, entonces tener una situación en la que Sails no se cargará hasta que finalice el enganche, y se rescata si el enganche no puede completar sus tareas.