快速入門:使用Node.js連線和查詢 適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器中的數據

適用於:適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器

重要

適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器位於淘汰路徑上。 強烈建議您升級至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。 如需移轉至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的詳細資訊,請參閱單一伺服器 適用於 PostgreSQL 的 Azure 資料庫 發生什麼事?

在本快速入門中,您會使用 Node.js 應用程式連線到 適用於 PostgreSQL 的 Azure 資料庫。 它會顯示如何使用 SQL 陳述式來查詢、插入、更新和刪除資料庫中的資料。 本文中的步驟假設您已熟悉使用 Node.js 進行開發,而且不熟悉 適用於 PostgreSQL 的 Azure 資料庫。

必要條件

安裝 pg 用戶端

安裝 pg,這是適用於 Node.js 的 PostgreSQL 用戶端。

若要這樣做,請從命令行執行適用於 JavaScript 的節點套件管理員 (npm),以安裝 pg 用戶端。

npm install pg

列出已安裝的套件來確認安裝。

npm list

取得連線資訊

取得連線至 適用於 PostgreSQL 的 Azure 資料庫 所需的連線資訊。 您需要完整的伺服器名稱和登入認證。

  1. Azure 入口網站 中,搜尋並選取您已建立的伺服器(例如 mydemoserver)。

  2. 從伺服器的 [概觀] 面板中,記下 [伺服器名稱] 和 [管理員 用戶名稱]。 如果您忘記密碼,您也可以從此面板重設密碼。

    適用於 PostgreSQL 的 Azure 資料庫 連接字串

在 Node.js 中執行 JavaScript 程式代碼

您可以輸入 node,從Bash殼層、終端機或 Windows 命令提示字元啟動Node.js,然後複製並貼到提示字元,以互動方式執行範例 JavaScript 程式代碼。 或者,您可以將 JavaScript 程式代碼儲存到文字檔,並以檔名作為參數啟動 node filename.js 以執行它。

連線、建立資料表及插入資料

使用下列程序代碼,使用 CREATE TABLEINSERT INTO SQL 語句連接和載入數據。 pg.用戶端對像是用來與 PostgreSQL 伺服器介面。 pg.Client.connect() 函式可用來建立與伺服器的連線。 pg.Client.query() 函式可用來對 PostgreSQL 資料庫執行 SQL 查詢。

將主機、dbname、使用者和密碼參數取代為您在建立伺服器和資料庫時所指定的值。

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();
        });
}

讀取資料

使用下列程序代碼,使用 SELECT SQL 語句連接和讀取數據。 pg.用戶端對像是用來與 PostgreSQL 伺服器介面。 pg.Client.connect() 函式可用來建立與伺服器的連線。 pg.Client.query() 函式可用來對 PostgreSQL 資料庫執行 SQL 查詢。

將主機、dbname、使用者和密碼參數取代為您在建立伺服器和資料庫時所指定的值。

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);
        });
}

更新資料

使用下列程序代碼,使用 UPDATE SQL語句連接和讀取數據。 pg.用戶端對像是用來與 PostgreSQL 伺服器介面。 pg.Client.connect() 函式可用來建立與伺服器的連線。 pg.Client.query() 函式可用來對 PostgreSQL 資料庫執行 SQL 查詢。

將主機、dbname、使用者和密碼參數取代為您在建立伺服器和資料庫時所指定的值。

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;
        });
}

刪除資料

使用下列程序代碼,使用 DELETE SQL 語句連接和讀取數據。 pg.用戶端對像是用來與 PostgreSQL 伺服器介面。 pg.Client.connect() 函式可用來建立與伺服器的連線。 pg.Client.query() 函式可用來對 PostgreSQL 資料庫執行 SQL 查詢。

將主機、dbname、使用者和密碼參數取代為您在建立伺服器和資料庫時所指定的值。

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

下一步