Node.js笔记(七)读取mongoDB的数据并显示

虽然以前接触了mysql的内容,但做网站的时候,感觉NoSQL数据库还是绕不过去。 很多书籍上都提到了node.js和MongoDB的配合使用,这里记录一下学习过程。

MongoDB的基本命令:

use dbname 新建或者使用现有数据库show dbs 显示所有数据库show collections 显示所有collection(表)db.collection.find() 打印表中数据

上述命令在mongo控制台中使用,不能在node.js里直接使用

我们想要把数据库里存放的文章列表取出来显示到页面上,离不开模板引擎,我分别使用了ejs和jade两种引擎,用于比较 关于数据库的管理,可以直接管理也可以使用monk提供的中间件,我会分别贴出来

/**app.js 不使用monk**/var express = require(‘express’);var path = require(‘path’);var jade = require(‘jade’);var fs = require(‘fs’);var mongodb = require(“mongodb”);var app = express();// view engine setupapp.set(‘views’, path.join(__dirname, ‘views’));app.set(‘view engine’, ‘jade’);// not use monkvar server = new mongodb.Server(‘localhost’,27017,{auto_reconnect:true}); var db = new mongodb.Db(“mysite”,server,{safe:false});//打开数据库连接db.open((err){console.log(err);return false;}elseconsole.log(‘connect!’);});{{db.collection(‘usercollection’, {safe:true}, function(err, collection){/*collection方法用于连接现有表,{safe:true} 选项,当collection不存在的时候报错createCollection方法用于创建新表,{safe:true} 选项,当collection存在的时候报错*/if(err){console.log(err);}else{console.log(‘get collection!’);collection.find().toArray(function(err,docs){console.log(‘find’);res.render(‘userlist’,{userlist:docs});});}});}}app.get(‘/’,link(db));/*关于路由link方法的位置,合适的做法是放在routes/index文件里面,,但方法里的依赖项太多,所以还是塞到了一个文件里*/{console.log(‘hah’);}var port = 8080;app.listen(port);console.log(‘Listening on port ‘ + port);/*使用monk*/var express = require(‘express’);var path = require(‘path’);var jade = require(‘jade’);var fs = require(‘fs’);var mongodb = require(“mongodb”);var monk = require(‘monk’);var db = monk(‘localhost:27017/mysite’);var app = express();// view engine setupapp.set(‘views’, path.join(__dirname, ‘views’));app.set(‘view engine’, ‘jade’);{var collection = db.get(‘usercollection’);collection.find({},{},function(e,docs){res.render(‘userlist’, {“userlist” : docs});//使用页面引擎渲染});};};app.get(‘/’,userlist(db));{console.log(‘hah’);}var port = 8080;app.listen(port);console.log(‘Listening on port ‘ + port);

可以看出使用monk之后省去了open操作,代码长度也有缩短。

jade和ejs 需要把列表的数据显示在页面上,因此需要页面引擎的渲染 下面是ejs和jade的代码:

/*jade 对缩进控制严格,稍不注意就出错*/extends layoutblock contenth1.User Listuleach user, i in userlistlia(href=”mailto:#{user.email}”)= user.username/*ejs这段模板是在网上找得,还没有试*/>=”text/css”>: none; width: 200px; padding:5px; background: pink; margin-bottom: 5px;} >>></li><% } %> [html] view plaincopyprint?>

———————————————————————— 关于nodejs文章的分类,想一想既不能算是前端,也不能算传统的后端。 但nodejs的出现,对确实是熟悉javascript的前端工程师来说,确实是好消息。因此将其分类为前端,虽有不妥之处,但也凑合。

看看花儿冲破北疆漫漫寒冬,妖娆绽放;

Node.js笔记(七)读取mongoDB的数据并显示

相关文章:

你感兴趣的文章:

标签云: