通过node.js使用mongodb
在之前示例的基础上( 解析web网页并保存页面中的图片),我们要将文档对象TankBook保存到数据库中。
下面先讲一下mongodb的基本操作,再结合使用nodejs代码。
数据库简单操作
准备
数据库选用的是mongodb,如何安装可参见 怎样在ubuntu 11.10下安装mongodb 2.0。如果要在本地安装,可在 这里下载对应平台的安装包。
插入记录
安装mongodb后,可在test数据库中创建表和记录。mongodb是面向文档的数据库,传统数据库中记录,等同于它的文档,表等同于集合。
我们要创建一个文档,就是把 解析web网页并保存页面中的图片示例中的TankBook对象作为文档保存起来。可在命令行里这样实现:
db.books.insert({‘title’:'坦克’,'coverImageUrl’:'/Iraq-m1_abrams.jpg/300px-Iraq-m1_abrams.jpg’})
这里books集合,当系统发现不存在的时候会自动创建。
如果不使用命令行,我建议使用mongohub。应该也有windows版本,我使用Mac版本。插入操作的截图:
查询记录
之后,我们可以考虑如何查出内容,命令行:
db.books.find()
这将打印出全部的文档,类似于SQL的:
select * from books;
如果使用mongohub:
使用nodejs
准备
nodejs是个强大的平台,有基本功能,而且可以挂很多模块。我们现在需要和mongodb连接的驱动,就类似比如mysql的java驱动一样。
安装:
npm install mongod
这个驱动的全称是node mongodb native,网址 在这里。nodejs有好几个mongodb的第三方驱动。和jdbc不一样,没有标准。所以需要到驱动的网站上去了解学习怎么使用它访问mongodb。
代码
代码分两部分,加载mongodb模块:
var $ = require(‘jquery’),
fs = require(‘fs’),
mongodb = require(‘mongodb’),
http = require(‘http’);
然后是使用它插入或者查看文档集合:
function saveToDb() {
var server = new mongodb.Server(‘marshal.easymorse.com’, 27017),
connect = new mongodb.Db(‘test’, server);connect.open(function (err, db) {
db.collection(‘books’, function (err, collection) {
collection.find(function (err, cursor) {
cursor.each(function (err, doc) {
if (doc) {
console.log(‘doc.title:’ + doc.title);
}
});
});// collection.insert(tankBook);
});
});
其中,第二段是游标遍历文档集合。第三段,被屏蔽掉的,是插入文档集合。
完整的源代码,见: https://github.com/MarshalW/TankManual/blob/v0.3/app.js