Не могу подключиться к базе данных, используя process.env | Нудный | nodejs - PullRequest
0 голосов
/ 02 мая 2020

В утомительной конфигурации использование process.env. (Подробности базы данных) завершается неудачно. Однако, если я поставлю те же значения вручную, соединение будет успешным. Я хотел бы использовать process.env вместо жесткого кодирования данных моей базы данных.

База данных размещена на azure.

Вот мой код:

const { Connection, Request } = require("tedious");
const dotenv = require("dotenv");

dotenv.config();

// Create connection to database
const config = {
  authentication: {
    options: {
      userName: "process.env.databaseUser",
      password: "process.env.databasePassword",
    },
    type: "default",
  },
  server: "process.env.databaseUrl",
  options: {
    database: "process.env.databaseName",
    encrypt: true,
  },
};

const connection = new Connection(config);

// Attempt to connect and execute queries if connection goes through
connection.on("connect", (err) => {
  if (err) {
    console.error(err.message);
  } else {
    queryDatabase();
  }
});

async function queryDatabase(query) {
  const request = new Request(query, (err, rowCount) => {
    if (err) {
      console.error(err.message);
    } else {
      console.log(`${rowCount} row(s) returned`);
    }
  });

  request.on("row", (columns) => {
    columns.forEach((column) => {
      console.log("%s\t%s", column.metadata.colName, column.value);
    });
  });

  connection.execSql(request);
}
module.exports = {
  queryDatabase,
};

вывод терминала:

Worker 09d76af8-01c2-4cdb-a2c1-d84de5ccfb89 connecting on 127.0.0.1:41165
[5/2/20 7:12:06 AM] Sat, 02 May 2020 07:12:06 GMT tedious deprecated The default value for `config.options.trustServerCertificate` will change from `true` to `false` in the next major version of `tedious`. Set the value to `true` or `false` explicitly to silence this message. at shared/my-db-helper.js:22:20
[5/2/20 7:12:06 AM] Sat, 02 May 2020 07:12:06 GMT tedious deprecated In the next major version of `tedious`, creating a new `Connection` instance will no longer establish a connection to the server automatically. Please use the new `connect` helper function or call the `.connect` method on the newly created `Connection` object to silence this message. at internal/process/next_tick.js:131:7
[5/2/20 7:12:06 AM] Failed to connect to process.env.databaseUrl:1433 - getaddrinfo ENOTFOUND process.env.databaseUrl
[5/2/20 7:12:07 AM] (node:21327) [DEP0064] DeprecationWarning: tls.createSecurePair() is deprecated. Please use tls.Socket instead.

.env file:

NODE_ENV=development
databaseUser=dataReader
databasePassword=***
databaseUrl=***.database.windows.net
databaseName=website
WRITE_FAILED_QUERY_TO_FILE=true

Замена переменных process.env жестко закодированными строками, содержащими ту же информацию, успешна и возвращает намеченный результат.

1 Ответ

0 голосов
/ 02 мая 2020

Я помещал process.env. (Databasedata) в кавычки! process.env - это объект. удалил цитаты и все работает.

@ MaazSyedAdeeb. ти. Такая слепая ошибка. Это работает.

...