Как подключить приложение Loopback к базе данных Google с включенным ssl? - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь подключить приложение Loopback к базе данных Google SQL, и я изменил файл Datasource.json в соответствии с учетными данными. Однако, когда я делаю запрос GET в Loopback API Explorer, я получаю сообщение об ошибке. Я не нашел никаких документов о том, как указать учетные данные ssl в Datasource.json, и я думаю, что это вызывает ошибку.

Я безуспешно пытался изменить Datasource.json, и ниже указано текущее состояние. Я изменил детали для конфиденциальности, но я на 100% уверен, что учетные данные верны, так как я могу установить успешное соединение с JavaScript.

{
  "nameOfModel": {
    "name": "db",
    "connector": "mysql",
    "host": "xx.xxx.x.xxx",
    "port": xxxx,
    "user": "user",
    "password": "password",
    "database": "sql_db",
    "ssl": true,
    "ca" : "/server-ca.pem",
    "cert" : "/client-cert.pem",
    "key" : "/client-key.pem"
  }
}

Это ошибка, которую возвращает командная строка, когда я пытаюсь выполнить GET-запрос в loopback API Explorer. Ошибка:

Тайм-аут при подключении через 5000 мс "заставляет меня поверить, что он не читает учетные данные ssl.

Unhandled error in GET /edd-sales?filter[offset]=0&filter[limit]=0&filter[skip]=0: 500 TypeError: Cannot read property 'name' of undefined
    at EddDbDataSource.DataSource.queueInvocation.DataSource.ready (D:\WebstormProjects\EDD-Database\edd-api\node_modules\loopback-datasource-juggler\lib\datasource.js:2577:81)

(node:10176) UnhandledPromiseRejectionWarning: Error: Timeout in connecting after 5000 ms
    at Timeout._onTimeout (D:\WebstormProjects\EDD-Database\edd-api\node_modules\loopback-datasource-juggler\lib\datasource.js:2572:10)
    at ontimeout (timers.js:498:11)

(node:10176) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
(node:10176) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

1 Ответ

0 голосов
/ 26 июня 2019

Вы уверены, что datasource.json позволяет вам указывать соединения "ssl"? Где вы взяли эту информацию? Я проверил их документацию , и они не показывают свойства "ssl", которые вы используете. Это также не указано для MySQL-коннектора properties .

У вас есть два варианта:

1.- Создайте соединение без использования SSL.

2.- Создайте собственный соединитель или используйте существующий с реализованными опциями ssl. Имейте в виду, что это может вызвать проблемы с платформой LoopBack.

Не имеет значения, какой из двух вариантов вы решите использовать, запомните Белый список ваш IP (IP-адрес, с которого вы пытаетесь получить доступ к экземпляру базы данных), вы можете сделать это в облаке Консоль, на вкладке «Подключения», в разделе «Публичный IP» Авторизованные сети. Если вы этого не сделаете, это может привести к ошибке истечения времени ожидания.

...