如何将Node.js连接到VPS上的MongoDB数据库
介绍
在本教程中,我们将展示如何使用 Node.js 连接到 VPS 中的 MongoDB 数据库并进行一些基本的数据操作。
以下是将使用的以下软件组件:
- Ubuntu 12.04 x32 VPS
- MongoDB v2.4.6
- Node.js v0.10.20
- MongoDB Node.js 驱动程序
MongoDB
“MongoDB 是一个开源的面向文档的数据库,提供高性能、高可用性和易扩展性”
如果你不熟悉 MongoDB 或者没有安装它,请先看看这个 tutorial。
让我们验证 MongoDB 进程是否正在运行:
ps -ef | grep mongo
输出应如下所示:
mongodb 1307 1 0 02:27 ? 00:00:01 /usr/bin/mongod --config /etc/mongodb.conf
如果它没有运行,请从 MongoDB bin 目录发出以下命令:
mongod
MongoDB 附带一个控制台客户端。 要启动它,请发出以下命令:
mongo
你会看到这样的输出(你可以忽略警告):
MongoDB shell version: 2.4.4 connecting to: test Server has startup warnings: Mon Oct 7 20:40:35.209 [initandlisten] Mon Oct 7 20:40:35.209 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000 >
运行此命令以列出现有数据库:
show dbs
运行此命令以显示选定的数据库:
db
运行以下命令切换到“test”数据库并显示其中包含的集合:
use test show collections
以下是您可以在控制台客户端中使用的命令列表,您可以通过键入“帮助”获取完整的命令列表:
show dbs #show database names show collections #show collections in current database show users # show users in current database show profile # show most recent system.profile entries with time >= 1ms show logs # show the accessible logger names show log [name] # prints out the last segment of log in memory, 'global' is default use <db_name> # set current database db.foo.find() # list objects in collection foo db.foo.find( { a : 1 } ) #list objects in foo where a == 1 it #result of the last line evaluated; use to further iterate exit #quit the mongo shell
节点.js
“Node.js 是一个基于 Chrome 的 JavaScript 运行时构建的平台,用于轻松构建快速、可扩展的网络应用程序。 Node.js 使用事件驱动的非阻塞 I/O 模型,使其轻量且高效,非常适合跨分布式设备运行的数据密集型实时应用程序。”
如果您没有安装此软件,请先花时间按照本教程中的说明进行操作。
让我们验证 Node.js 进程是否正在运行:
node -v
您应该看到 Node.js 版本作为命令输出。
MongoDB Node.js 驱动程序
此驱动程序是 MongoDB 官方支持的 Node.js 驱动程序。 它是用纯 JavaScript 编写的,并为 MongoDB 提供本机异步 Node.js 接口。
使用节点包管理器“npm”安装驱动程序:
npm install mongodb
连接到 MongoDB 并执行数据操作
现在是时候编写允许您的 Node.js 应用程序连接到 MongoDB 的代码了。 将涵盖三个操作:连接、写入和从数据库读取。
为了能够执行您的代码,我们需要创建一个新文件,我们将其命名为:“app.js”。
获得文件后,使用您喜欢的编辑器添加以下代码:
var MongoClient = require('mongodb').MongoClient , format = require('util').format; MongoClient.connect('mongodb://127.0.0.1:27017/test', function (err, db) { if (err) { throw err; } else { console.log("successfully connected to the database"); } db.close(); });
通过键入以下命令执行 app.js 文件:
node app.js
您应该在输出中看到以下字符串:成功连接到数据库。
现在让我们添加一些逻辑,将内容插入到名为“test_insert”的新集合中:
var MongoClient = require('mongodb').MongoClient , format = require('util').format; MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) { if(err) throw err; var collection = db.collection('test_insert'); collection.insert({a:2}, function(err, docs) { collection.count(function(err, count) { console.log(format("count = %s", count)); db.close(); }); }); });
添加另一个代码块来验证数据是否已进入数据库:
var MongoClient = require('mongodb').MongoClient , format = require('util').format; MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) { if(err) throw err; var collection = db.collection('test_insert'); collection.insert({a:2}, function(err, docs) { collection.count(function(err, count) { console.log(format("count = %s", count)); }); }); // Locate all the entries using find collection.find().toArray(function(err, results) { console.dir(results); // Let's close the db db.close(); }); });
恭喜! 您现在可以使用 Node.js 应用程序在 VPS 中连接、插入和读取 MongoDB 数据库中的数据!