Nodejs和MongoDB初体验

学习了一下Nodejs和MongoDB,写了个示例程序,读取数据库中产品的列表。

var http = require("http"),
	mongo = require("mongodb"),
	events = require("events");

http.createServer(function(req, res) {

	var products_emitter = new events.EventEmitter(),
	    // 创建到northwind数据库的链接。相当于use northwind
	    db = new mongo.Db("northwind", new mongo.Server('localhost', 27017, {}), {});
	
	var listener = function(products) {
	    var html = [], len = products.length;
	    html.push('<!DOCTYPE html>');
	    html.push('<html>');
	    html.push('<head>');
	    html.push('<title>Nodejs</title>');
	    html.push('</head>');
	    html.push('<body>');	 
	    if(len > 0) {
	    	html.push('<ul>');					
	    	for(var i = 0; i < len; i++) {
    			html.push('<li>' + products[i].name + '</li>');
	    	}
	    	html.push('</ul>');
	    }
	    html.push('</body>');
	    html.push('</html>');
	    
	    res.writeHead(200, "Content-Type: text/html");
	    res.write(html.join(''));
	    res.end();
	    
	    clearTimeout(timeout);
	}
	products_emitter.on('products', listener);
	
	var timeout = setTimeout(function() {
	    products_emitter.emit('products', []);
	    products_emitter.removeListener('products', listener);
	}, 10000);
	        
	db.open(function() {
	    // 打开名为products的表
		db.collection("products", function(err, collection) {
		    // select * from products 相当于db.products.find()
			collection.find(function(err, cursor) {
				cursor.toArray(function(err, items) {
					products_emitter.emit('products', items);
				});
			});
		});
	});
	
}).listen(8000);

console.log("Started");

Nodejs和MongoDB初体验》上有5条评论

  1. Pingback引用通告: nodejs中文教程-nodejs如何操作mongoDB的实例 « 工具猫 – 简单快速的桌面小应用开发方案

  2. Pingback引用通告: ubuntu11.04 nodejs mongodb以及测试示例

  3. wei

    楼主好人啊,冒昧问下,你的这个代码的插件是那里来的?
    自己写的吗/
    ……………..那里有这么好的插件啊。
    跟csdn差不多。

发表评论