快速入门:使用 Node.js 连接到 Azure Database for PostgreSQL 并查询其中的数据 - 单一服务器
适用于: Azure Database for PostgreSQL - 单一服务器
重要
Azure Database for PostgreSQL - 单一服务器即将停用。 我们强烈建议升级到 Azure Database for PostgreSQL 灵活服务器。 有关迁移到 Azure Database for PostgreSQL - 灵活服务器的详细信息,请参阅 Azure Database for PostgreSQL 单一服务器会发生什么情况?。
在本快速入门中,我们使用 Node.js 应用程序连接到 Azure Database for PostgreSQL。 同时还介绍了如何使用 SQL 语句在数据库中查询、插入、更新和删除数据。 本文中的步骤假定你熟悉如何使用 Node.js 进行开发,但不熟悉如何使用 Azure Database for PostgreSQL。
先决条件
具有活动订阅的 Azure 帐户。 创建一个试用帐户。
完成快速入门:在 Azure 门户中创建 Azure Database for PostgreSQL 服务器或快速入门:使用 Azure CLI 创建 Azure Database for PostgreSQL 中的步骤。
安装 pg 客户端
安装 pg,这是 Node.js 的 PostgreSQL 客户端。
为此,请从命令行运行适用于 JavaScript 的节点包管理器 (npm),以便安装 pg 客户端。
npm install pg
通过列出已安装的包来验证安装。
npm list
获取连接信息
获取连接到 Azure Database for PostgreSQL 所需的连接信息。 需要完全限定的服务器名称和登录凭据。
在 Azure 门户中,搜索并选择已创建的服务器(例如 mydemoserver)。
从服务器的“概览”面板中记下“服务器名称”和“管理员用户名”。 如果忘记了密码,也可通过此面板来重置密码。
在 Node.js 中运行 JavaScript 代码
可以通过键入 node
从 bash shell、终端或 Windows 命令提示符启动 Node.js,然后以交互方式运行示例 JavaScript 代码(只需将其复制并粘贴到提示符处即可)。 也可将 JavaScript 代码保存到文本文件中,然后以文件名作为运行所需的参数来启动 node filename.js
。
进行连接,创建表,然后插入数据
通过以下代码进行连接,然后使用 CREATE TABLE 和 INSERT INTO SQL 语句加载数据。 pg.Client 对象用作 PostgreSQL 服务器的接口。 pg.Client.connect() 函数用来建立到服务器的连接。 pg.Client.query() 函数用来针对 PostgreSQL 数据库执行 SQL 查询。
将 host、dbname、user 和 password 参数替换为创建服务器和数据库时指定的值。
const pg = require('pg');
const config = {
host: '<your-db-server-name>.postgres.database.chinacloudapi.cn',
// 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.Client 对象用作 PostgreSQL 服务器的接口。 pg.Client.connect() 函数用来建立到服务器的连接。 pg.Client.query() 函数用来针对 PostgreSQL 数据库执行 SQL 查询。
将 host、dbname、user 和 password 参数替换为创建服务器和数据库时指定的值。
const pg = require('pg');
const config = {
host: '<your-db-server-name>.postgres.database.chinacloudapi.cn',
// 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.Client 对象用作 PostgreSQL 服务器的接口。 pg.Client.connect() 函数用来建立到服务器的连接。 pg.Client.query() 函数用来针对 PostgreSQL 数据库执行 SQL 查询。
将 host、dbname、user 和 password 参数替换为创建服务器和数据库时指定的值。
const pg = require('pg');
const config = {
host: '<your-db-server-name>.postgres.database.chinacloudapi.cn',
// 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.Client 对象用作 PostgreSQL 服务器的接口。 pg.Client.connect() 函数用来建立到服务器的连接。 pg.Client.query() 函数用来针对 PostgreSQL 数据库执行 SQL 查询。
将 host、dbname、user 和 password 参数替换为创建服务器和数据库时指定的值。
const pg = require('pg');
const config = {
host: '<your-db-server-name>.postgres.database.chinacloudapi.cn',
// 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