Node.js Обработка Сбоев Сервера
Есть ли способ, как я могу сделать некоторые вещи обновления базы данных всякий раз, когда мой сервер node.js падает или останавливается. подобно try{}catch(){}finally(){}
в ЯВА. Я немного новичок здесь.
Есть ли какие-либо события, которые узел будет излучать до того, как он отключится. Если так, то я могу написать свою функцию там.
У меня есть сценарий, если я остановлю сервер вручную, мне нужно обновить некоторые поля в базе данных. То же самое относится и к необработанным сбоям.
я здесь о домене в Node.js. Но я понятия не имею, как контролировать весь сервер, используя домен.
2 ответа
Событие генерируется, когда процесс узла собирается выйти:
process.on('exit', function(code) {
console.log('About to exit with code:', code);
});
http://nodejs.org/api/process.html
Здесь вы не можете запросить базу данных, поскольку этот обработчик может выполнять только синхронные операции. Некоторые возможные альтернативы:
- использовать транзакции базы данных, чтобы вам никогда не приходилось делать "обновления базы данных" при сбое приложения
- используйте такой инструмент, как Upstart, чтобы автоматически перезапустить ваш процесс, а затем делать исправления базы данных каждый раз, когда ваш процесс запускается
Когда вы используете узел JS, плохая практика - использовать try / catch из-за большого количества асинхронных вызовов. Лучшая практика здесь, чтобы использовать "обещания", просмотрите следующую ссылку, там вы можете найти хорошее объяснение: https://www.promisejs.org/