Перейти к содержанию

Oracle

Работа Node.js с Oracle осуществляется с использованием модуля node-oracledb.

Установка

Самый простой способ установить node-oracledb - использовать npm, в репозитории которого хранится уже скомпилированная и настроенная версия модуля.

1
npm install oracledb --save

При установке модуля через npm для ОС Windows потребуется установка Microsoft Visual C++ 2015.

В некоторых случаях использование в операционной системе уже скомпилированного модуля будет невозможным и потребуется ручная компиляция модуля из исходного кода. В этом случае порядок действий следующий:

  • Установить Python версии 2.7;
  • Установить компилятор C с поддержкой C++ (подойдет Microsoft Visual C++ 2015);
  • Выполнить из директории проекта команду:
1
npm install oracle/node-oracledb.git#v3.1.2

Для работы в Node.js модуля node-oracledb вне зависимости от операционной системы, она обязательно должна содержать клиентскую библиотеку Oracle. Например, для Windows x64 ее можно скачать здесь.

Подключение

Для подключения к базе данных Oracle используется метод getConnection() библиотеки node-oracledb, которому обязательно передаются следующие параметры:

  • user - имя пользователя БД;
  • password - пароль пользователя БД;
  • connectString - строка подключения в формате host/service, где host - хост, где запущена БД, а service - имя сервиса экземпляра БД.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
let oracledb = require('oracledb');

let connection;

oracledb
    .getConnection({
        user: 'user',
        password: 'password',
        connectString: 'localhost/XXXDB3',
    })
    .then((conn) => (connection = conn))
    .catch((err) => throw err);

Выполнение запросов

Чтобы выполнить запрос к базе, используйте метод execute().

1
2
3
4
connection
    .execute(`SELECT *  FROM cars`)
    .then((result) => console.log(result))
    .catch((err) => throw err);

Если в запросе вам необходимо использовать переданные с клиента данные, то для безопасности осуществления SQL-инъекции внешние данные передаются в запрос вторым параметром в виде массива.

1
2
3
4
5
6
connection
    .execute(`SELECT *  FROM cars WHERE model = :model`, [
        'Audi',
    ])
    .then((result) => console.log(result))
    .catch((err) => throw err);

В самом запросе внешние данные определяются с помощью двоеточия и имени параметра. Но их подстановка будет происходить по порядку: для первой переменной в запросе - первое значение из массива и т. д.

Цель данной статьи - дать минимальные знания, которых достаточных для начала использования в Node.js модуля node-oracledb. На самом деле он имеет обширное API, позволяющее использовать весь функционал Oracle. Более подробно ознакомиться с возможностями node-oracledb можно в официальной документации.

Комментарии