Как подключиться к удаленной БД по запросу (в случае частичного автономного режима) в Sails 0.12 - PullRequest
0 голосов
/ 27 января 2019

У меня компьютер работает в режиме киоска (киоск самообслуживания).У него слабое интернет-соединение, поэтому я использую локальный сервер MongoDB для всех данных.Но иногда (например, ежедневно) я хочу отправить статистику и другие вещи в удаленную базу данных.Когда я запускаю ПК, когда интернет-соединение не работает, я получаю следующее сообщение:

error: A hook (`orm`) failed to load!
error: Error: Failed to connect to MongoDB.  Are you sure your configured Mongo instance is running?
  Error details: { MongoError: connection 1 to ds241489.mlab.com:41489 timed out
    at Function.MongoError.create (/home/nevada/v4/node_modules/mongodb-core/lib/error.js:29:11)
    at Socket.<anonymous> (/home/nevada/v4/node_modules/mongodb-core/lib/connection/connection.js:186:20)
    ...

Затем происходит сбой Sails, и браузер показывает сообщение об ошибке пользователю

connections.js:

mlab: {
  adapter: 'sails-mongo',
  host: 'ds241489.mlab.com',
  port: *****,
  user: '******',
  password: '************',
  database: '******'
}

models / Remote.js:

module.exports = {
  connection: 'mlab',
  attributes: {
    // Some stuff here
  }
};

Все работает нормально, пока интернет доступен, но когда ПК отключен, сервер отказывается запускаться.Как я могу пропустить автоматическое подключение к (удаленной) БД, а затем (попытаться) подключиться вручную, по запросу пользователя?

1 Ответ

0 голосов
/ 29 января 2019

Я не реализовал это сам, но я сделал бы здесь одну из двух вещей:

  1. Настройка отдельного cron или другого типа запланированной задачи для запуска каждый часили так.Затем он проверит интернет и, если интернет успешно подключится, запустит скрипт DB-sync.Конечно, внутри большой попытки / уловки, чтобы изящно обрабатывать Интернет-соединение на полпути.

  2. Установите прослушиватель событий в системе хоста / киоска, который прослушивает событие, указывающее, чтоОС снова подключена к интернету.Когда это произойдет, попробуйте запустить скрипт, упомянутый выше.

Номер один - наиболее вероятный кандидат в моей книге, и я бы даже добавил модуль Sails, чтобы сохранить всю логику вконтроллеры и конфиг.sails-hook-cron ( GitHub ) - это очень популярный хук, который вы можете использовать для настройки вашего cron-задания в файле config/cron.js и его использования в контроллере по вашему выбору.

Настройте ваше приложение на НЕ автоматически подключаться к Mlab.Делайте это только в sync-скрипте, и приложение должно запускаться без помех, независимо от вашего интернет-соединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...