Краткое руководство. Использование Node.js для подключения и запроса данных в База данных Azure для PostgreSQL — отдельный сервер

Область применения: отдельный сервер Базы данных Azure для PostgreSQL

Внимание

База данных Azure для PostgreSQL — одиночный сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для PostgreSQL — гибкий сервер. Дополнительные сведения о миграции на База данных Azure для PostgreSQL — гибкий сервер см. в статье "Что происходит с одним сервером База данных Azure для PostgreSQL?".

Из этого краткого руководства вы узнаете, как подключиться к Базе данных Azure для PostgreSQL с помощью приложения Node.js. Здесь также показано, как использовать инструкции SQL для запроса, вставки, обновления и удаления данных в базе данных. В этой статье предполагается, что у вас уже есть опыт разработки на Node.js и вы только начали работу с Базой данных Azure для PostgreSQL.

Необходимые компоненты

Установка клиента pg

Установите pg, клиент PostgreSQL для Node.js.

Для этого запустите диспетчер пакетов узла (npm) для JavaScript из командной строки.

npm install pg

Проверьте установку, получив список установленных пакетов.

npm list

Получение сведений о подключении

Получите сведения, необходимые для подключения к базе данных Azure.для PostgreSQL. Вам потребуется полное имя сервера и учетные данные для входа.

  1. На портале Azure найдите и выберите созданный вами сервер (например, mydemoserver).

  2. Запишите имя сервера и имя для входа администратора с панели сервера Обзор. Если вы забыли свой пароль, можно также сбросить пароль с помощью этой панели.

    Строка подключения Базы данных Azure для PostgreSQL

Выполнение кода JavaScript в Node.js

Node.js можно запустить из оболочки Bash, терминала или командной строки Windows при помощи команды node. Затем интерактивно запустите пример кода JavaScript, скопировав и вставив его в командную строку. Либо же можно сохранить код JavaScript в текстовый файл и запустить node filename.js с именем файла в качестве параметра для его выполнения.

Подключение, создание таблицы и вставка данных

Используйте приведенный ниже код для подключения и загрузки данных с помощью инструкций SQL CREATE TABLE и INSERT INTO. Объект pg.Client используется для обмена данными с сервером PostgreSQL. Функция pg.Client.connect() используется для подключения к серверу. Функция pg.Client.query() используется для выполнения SQL-запроса к базе данных PostgreSQL.

Замените значения параметров host, dbname, user и password значениями, указанными при создании сервера и базы данных.

const pg = require('pg');

const config = {
    host: '<your-db-server-name>.postgres.database.azure.com',
    // Do not hard code your username and password.
    // Consider using Node environment variables.
    user: '<your-db-username>',     
    password: '<your-password>',
    database: '<name-of-database>',
    port: 5432,
    ssl: true
};

const client = new pg.Client(config);

client.connect(err => {
    if (err) throw err;
    else {
        queryDatabase();
    }
});

function queryDatabase() {
    const query = `
        DROP TABLE IF EXISTS inventory;
        CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);
        INSERT INTO inventory (name, quantity) VALUES ('banana', 150);
        INSERT INTO inventory (name, quantity) VALUES ('orange', 154);
        INSERT INTO inventory (name, quantity) VALUES ('apple', 100);
    `;

    client
        .query(query)
        .then(() => {
            console.log('Table created successfully!');
            client.end(console.log('Closed client connection'));
        })
        .catch(err => console.log(err))
        .then(() => {
            console.log('Finished execution, exiting now');
            process.exit();
        });
}

Чтение данных

Используйте указанный ниже код с инструкцией SQL SELECT для подключения и чтения данных. Объект pg.Client используется для обмена данными с сервером PostgreSQL. Функция pg.Client.connect() используется для подключения к серверу. Функция pg.Client.query() используется для выполнения SQL-запроса к базе данных PostgreSQL.

Замените значения параметров host, dbname, user и password значениями, указанными при создании сервера и базы данных.

const pg = require('pg');

const config = {
    host: '<your-db-server-name>.postgres.database.azure.com',
    // Do not hard code your username and password.
    // Consider using Node environment variables.
    user: '<your-db-username>',     
    password: '<your-password>',
    database: '<name-of-database>',
    port: 5432,
    ssl: true
};

const client = new pg.Client(config);

client.connect(err => {
    if (err) throw err;
    else { queryDatabase(); }
});

function queryDatabase() {

    console.log(`Running query to PostgreSQL server: ${config.host}`);

    const query = 'SELECT * FROM inventory;';

    client.query(query)
        .then(res => {
            const rows = res.rows;

            rows.map(row => {
                console.log(`Read: ${JSON.stringify(row)}`);
            });

            process.exit();
        })
        .catch(err => {
            console.log(err);
        });
}

Обновление данных

Используйте указанный ниже код с инструкцией SQL UPDATE для подключения и чтения данных. Объект pg.Client используется для обмена данными с сервером PostgreSQL. Функция pg.Client.connect() используется для подключения к серверу. Функция pg.Client.query() используется для выполнения SQL-запроса к базе данных PostgreSQL.

Замените значения параметров host, dbname, user и password значениями, указанными при создании сервера и базы данных.

const pg = require('pg');

const config = {
    host: '<your-db-server-name>.postgres.database.azure.com',
    // Do not hard code your username and password.
    // Consider using Node environment variables.
    user: '<your-db-username>',     
    password: '<your-password>',
    database: '<name-of-database>',
    port: 5432,
    ssl: true
};

const client = new pg.Client(config);

client.connect(err => {
    if (err) throw err;
    else {
        queryDatabase();
    }
});

function queryDatabase() {
    const query = `
        UPDATE inventory 
        SET quantity= 1000 WHERE name='banana';
    `;

    client
        .query(query)
        .then(result => {
            console.log('Update completed');
            console.log(`Rows affected: ${result.rowCount}`);
        })
        .catch(err => {
            console.log(err);
            throw err;
        });
}

Удаление данных

Используйте указанный ниже код с инструкцией SQL DELETE для подключения и чтения данных. Объект pg.Client используется для обмена данными с сервером PostgreSQL. Функция pg.Client.connect() используется для подключения к серверу. Функция pg.Client.query() используется для выполнения SQL-запроса к базе данных PostgreSQL.

Замените значения параметров host, dbname, user и password значениями, указанными при создании сервера и базы данных.

const pg = require('pg');

const config = {
    host: '<your-db-server-name>.postgres.database.azure.com',
    // Do not hard code your username and password.
    // Consider using Node environment variables.
    user: '<your-db-username>',     
    password: '<your-password>',
    database: '<name-of-database>',
    port: 5432,
    ssl: true
};

const client = new pg.Client(config);

client.connect(err => {
    if (err) {
        throw err;
    } else {
        queryDatabase();
    }
});

function queryDatabase() {
    const query = `
        DELETE FROM inventory 
        WHERE name = 'apple';
    `;

    client
        .query(query)
        .then(result => {
            console.log('Delete completed');
            console.log(`Rows affected: ${result.rowCount}`);
        })
        .catch(err => {
            console.log(err);
            throw err;
        });
}

Очистка ресурсов

Чтобы очистить все ресурсы, используемые во время этого краткого руководства, удалите группу ресурсов с помощью следующей команды:

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes

Следующие шаги