Node.js筆記(七)讀取mongoDB的資料並顯示__js

來源:互聯網
上載者:User

雖然以前接觸了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(function(err,db){      if(err){          console.log(err);          return false;      }    else        console.log('connect!');});//串連到collectionvar link = function(db){    return function(req,res){    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檔案裡面,但方法裡的依賴項太多,所以還是塞到了一個檔案裡*/var list = function(){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 userlist = function(db) {    return function(req, res) {        var collection = db.get('usercollection');        collection.find({},{},function(e,docs){            res.render('userlist', {                "userlist" : docs            });//使用頁面引擎渲染        });    };};app.get('/',userlist(db));var list = function(){console.log('hah');}var port = 8080;app.listen(port);console.log('Listening on port ' + port);

可以看出使用monk之後省去了open操作,代碼長度也有縮短。

jade和ejs
需要把列表的資料顯示在頁面上,因此需要頁面引擎的渲染
下面是ejs和jade的代碼:

/*jade 對縮排控制嚴格,稍不注意就出錯*/extends layoutblock content    h1.        User List    ul        each user, i in userlist            li                a(href="mailto:#{user.email}")= user.username
/*ejs這段模板是在網上找得,還沒有試*/<html>  <head>  <title></title>  <style type="text/css">     ul li { list-style: none; width: 200px; padding:5px; background: pink; margin-bottom: 5px;}  </style>  </head>  <body>      <ul>          <% for(i=0; i< userlist.length; i++) {%>             <li><a><%= userlist[i].username %></a></li>          <% } %>  [html] view plaincopyprint?        </yk>  </body>  </html>

————————————————————————
關於nodejs文章的分類,想一想既不能算是前端,也不能算傳統的後端。
但nodejs的出現,對確實是熟悉javascript的前端工程師來說,確實是好訊息。因此將其分類為前端,雖有不妥之處,但也湊合。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.