🌐 Nodejs.cn

数据库集成

将连接数据库的功能添加到 Express 应用中,只需在应用中加载适合的数据库 Node.js 驱动程序即可。本文档简要说明了如何在 Express 应用中添加和使用一些最受欢迎的用于数据库系统的 Node.js 模块:

🌐 Adding the capability to connect databases to Express apps is just a matter of loading an appropriate Node.js driver for the database in your app. This document briefly explains how to add and use some of the most popular Node.js modules for database systems in your Express app:

Caution

这些数据库驱动程序只是众多可用驱动程序中的一部分。有关其他选项,请在npm网站上搜索。

🌐 These database drivers are among many that are available. For other options, search on the npm site.

卡桑德拉

🌐 Cassandra

模块: cassandra-driver

安装

🌐 Installation

Terminal window
npm install cassandra-driver

示例

🌐 Example

index.cjs
const cassandra = require('cassandra-driver');
const client = new cassandra.Client({ contactPoints: ['localhost'] });
client.execute('select key from system.local', (err, result) => {
if (err) throw err;
console.log(result.rows[0]);
});

Couchbase

模块: couchnode

安装

🌐 Installation

Terminal window
npm install couchbase

示例

🌐 Example

index.cjs
const couchbase = require('couchbase');
const bucket = new couchbase.Cluster('http://localhost:8091').openBucket('bucketName');
// add a document to a bucket
bucket.insert('document-key', { name: 'Matt', shoeSize: 13 }, (err, result) => {
if (err) {
console.log(err);
} else {
console.log(result);
}
});
// get all documents with shoe size 13
const n1ql = 'SELECT d.* FROM `bucketName` d WHERE shoeSize = $1';
const query = N1qlQuery.fromString(n1ql);
bucket.query(query, [13], (err, result) => {
if (err) {
console.log(err);
} else {
console.log(result);
}
});

CouchDB

模块: nano

安装

🌐 Installation

Terminal window
npm install nano

示例

🌐 Example

index.js
const nano = require('nano')('http://localhost:5984');
nano.db.create('books');
const books = nano.db.use('books');
// Insert a book document in the books database
books.insert({ name: 'The Art of war' }, null, (err, body) => {
if (err) {
console.log(err);
} else {
console.log(body);
}
});
// Get a list of all books
books.list((err, body) => {
if (err) {
console.log(err);
} else {
console.log(body.rows);
}
});

LevelDB

模块: levelup

安装

🌐 Installation

Terminal window
npm install level levelup leveldown

示例

🌐 Example

index.cjs
const levelup = require('levelup');
const db = levelup('./mydb');
db.put('name', 'LevelUP', (err) => {
if (err) return console.log('Ooops!', err);
db.get('name', (err, value) => {
if (err) return console.log('Ooops!', err);
console.log(`name=${value}`);
});
});

MySQL

模块: mysql

安装

🌐 Installation

Terminal window
npm install mysql

示例

🌐 Example

index.cjs
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'dbuser',
password: 's3kreee7',
database: 'my_db',
});
connection.connect();
connection.query('SELECT 1 + 1 AS solution', (err, rows, fields) => {
if (err) throw err;
console.log('The solution is: ', rows[0].solution);
});
connection.end();

MongoDB

模块: mongodb

安装

🌐 Installation

Terminal window
npm install mongodb

示例 (v2.*)

🌐 Example (v2.*)

index.js
const MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/animals', (err, db) => {
if (err) throw err;
db.collection('mammals')
.find()
.toArray((err, result) => {
if (err) throw err;
console.log(result);
});
});

示例 (v3.*)

🌐 Example (v3.*)

index.js
const MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/animals', (err, client) => {
if (err) throw err;
const db = client.db('animals');
db.collection('mammals')
.find()
.toArray((err, result) => {
if (err) throw err;
console.log(result);
});
});

如果你想要一个用于 MongoDB 的对象模型驱动,可以看看 Mongoose

🌐 If you want an object model driver for MongoDB, look at Mongoose.

Neo4j

模块: neo4j-driver

安装

🌐 Installation

Terminal window
npm install neo4j-driver

示例

🌐 Example

index.cjs
const neo4j = require('neo4j-driver');
const driver = neo4j.driver('neo4j://localhost:7687', neo4j.auth.basic('neo4j', 'letmein'));
const session = driver.session();
session.readTransaction((tx) => {
return tx
.run('MATCH (n) RETURN count(n) AS count')
.then((res) => {
console.log(res.records[0].get('count'));
})
.catch((error) => {
console.log(error);
});
});

甲骨文

🌐 Oracle

模块: oracledb

安装

🌐 Installation

注意:查看安装前提条件

🌐 NOTE: See installation prerequisites.

Terminal window
npm install oracledb

示例

🌐 Example

index.cjs
const oracledb = require('oracledb');
const config = {
user: '<your db user>',
password: '<your db password>',
connectString: 'localhost:1521/orcl',
};
async function getEmployee(empId) {
let conn;
try {
conn = await oracledb.getConnection(config);
const result = await conn.execute('select * from employees where employee_id = :id', [empId]);
console.log(result.rows[0]);
} catch (err) {
console.log('Ouch!', err);
} finally {
if (conn) {
// conn assignment worked, need to close
await conn.close();
}
}
}
getEmployee(101);

PostgreSQL

模块: pg-promise

安装

🌐 Installation

Terminal window
npm install pg-promise

示例

🌐 Example

index.js
const pgp = require('pg-promise')(/* options */);
const db = pgp('postgres://username:password@host:port/database');
db.one('SELECT $1 AS value', 123)
.then((data) => {
console.log('DATA:', data.value);
})
.catch((error) => {
console.log('ERROR:', error);
});

Redis

模块: redis

安装

🌐 Installation

Terminal window
npm install redis

示例

🌐 Example

index.cjs
const redis = require('redis');
const client = redis.createClient();
client.on('error', (err) => {
console.log(`Error ${err}`);
});
client.set('string key', 'string val', redis.print);
client.hset('hash key', 'hashtest 1', 'some value', redis.print);
client.hset(['hash key', 'hashtest 2', 'some other value'], redis.print);
client.hkeys('hash key', (err, replies) => {
console.log(`${replies.length} replies:`);
replies.forEach((reply, i) => {
console.log(` ${i}: ${reply}`);
});
client.quit();
});

SQL 服务器

🌐 SQL Server

模块: tedious

安装

🌐 Installation

Terminal window
npm install tedious

示例

🌐 Example

index.js
const Connection = require('tedious').Connection;
const Request = require('tedious').Request;
const config = {
server: 'localhost',
authentication: {
type: 'default',
options: {
userName: 'your_username', // update me
password: 'your_password', // update me
},
},
};
const connection = new Connection(config);
connection.on('connect', (err) => {
if (err) {
console.log(err);
} else {
executeStatement();
}
});
function executeStatement() {
request = new Request("select 123, 'hello world'", (err, rowCount) => {
if (err) {
console.log(err);
} else {
console.log(`${rowCount} rows`);
}
connection.close();
});
request.on('row', (columns) => {
columns.forEach((column) => {
if (column.value === null) {
console.log('NULL');
} else {
console.log(column.value);
}
});
});
connection.execSql(request);
}

SQLite

模块: sqlite3

安装

🌐 Installation

Terminal window
npm install sqlite3

示例

🌐 Example

index.js
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database(':memory:');
db.serialize(() => {
db.run('CREATE TABLE lorem (info TEXT)');
const stmt = db.prepare('INSERT INTO lorem VALUES (?)');
for (let i = 0; i < 10; i++) {
stmt.run(`Ipsum ${i}`);
}
stmt.finalize();
db.each('SELECT rowid AS id, info FROM lorem', (err, row) => {
console.log(`${row.id}: ${row.info}`);
});
});
db.close();

Elasticsearch

模块: elasticsearch

安装

🌐 Installation

Terminal window
npm install elasticsearch

示例

🌐 Example

index.cjs
const elasticsearch = require('elasticsearch');
const client = elasticsearch.Client({
host: 'localhost:9200',
});
client
.search({
index: 'books',
type: 'book',
body: {
query: {
multi_match: {
query: 'express js',
fields: ['title', 'description'],
},
},
},
})
.then(
(response) => {
const hits = response.hits.hits;
},
(error) => {
console.trace(error.message);
}
);