您好,登錄后才能下訂單哦!
NoSQL的代表MongoDB最近大受歡迎,雖然還有一些功能沒有完善,但是并不影響它的大火。
Node.js是使用JavaScript 編寫的可以運(yùn)行在服務(wù)端的JS語言。
那么,二者碰撞會(huì)產(chǎn)生什么樣的火花呢。
今天,我就以一個(gè)簡單的例子介紹一下(在本地新建數(shù)據(jù)庫文件并將其內(nèi)容顯示到瀏覽器窗體);
1.準(zhǔn)備部分:所需要的工具IDE為WebStorm,MongoDB,Node.js。
1)首先需要下下載MongoDB并且配置環(huán)境變量(Path 指向安裝目錄)
第一步:建立MongDB服務(wù)輸入命令 mongod.exe --bind_ip 127.0.0.1(本地IP地址) --logpath "D:\M_LOG\mongodb.l
og(日志文件所在地)" --logappend --dbpath "D:\M_DB(數(shù)據(jù)表所在地)" --port 27017(端口號)--serviceName " Mongod(服務(wù)名)" --serviceDisplayName "Mongods(顯示的名稱)" --install
第二步:命令行輸入mongo 進(jìn)入mongoDB環(huán)境;輸入use dbtest(使用dbtest這個(gè)數(shù)據(jù)庫,如果沒有會(huì)自動(dòng)創(chuàng)建新的數(shù)據(jù)庫);
輸入db.createCollection("表名字")創(chuàng)建表;
輸入db.表名.insert({"key1":"value1","key2":"value2"});匯創(chuàng)建一條數(shù)據(jù)它并不是嚴(yán)格意義的數(shù)據(jù)庫,所以允許多個(gè)不同的key存在;
輸入db.表名.find();查看表里的數(shù)據(jù)
2)下載Node.js 一直下一步即可,它自動(dòng)包含了一個(gè)包管理工具npm.
3) 使用WebStorm新建一個(gè)Node.js Express
APP 工程。
4)在WebStorm自帶的命令行進(jìn)入node_moudles目錄下(cd node_moudles)下載的模塊盡量放在此目錄下。
輸入npm install mongodb,
下載Node.js連接MongoDB的所需模塊。
5)在自帶的命令行工具輸入npm install ejs。下載ejs模板;
2.代碼部分:
1)找到新建工程目錄下的app.js,將模板替換為ejs模板
// view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs');
2)如果app.js沒有監(jiān)聽端口的話則在最后加入
app.listen(3000);
3) 在項(xiàng)目的views文件夾下新建立三個(gè)測試用的ejs文件(新建html文件后綴改為.ejs)
index1.ejs
<!DOCTYPE html> <html> <head> <title>my index</title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <h2>Hello World</h2> <p>Welcome to</p> <p><a href="login" rel="external nofollow" >登陸</a></p> </body> </html> login.ejs [html] view plain copy <!DOCTYPE html> <html> <head> <title>my login</title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <h2>Hello World</h2> <p>Welcome to</p> <form action="ucenter" method="post"> <p> <span>name:</span> <br> <input id="name" name="name" type="text"> </p> <p> <span>password:</span> <br> <input id="password" name="password" type="password"> </p> <p><input type="submit" value="submit"></p> </form> <form action="checkall" method="get"> <input type="submit" value="全部"> </form> </body> </html>
checkinfo.ejs(重點(diǎn) 返回?cái)?shù)據(jù)表信息)
<!DOCTYPE html> <html> <head> <title>my checklist</title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <%= datas %> <br/> <%= reason %> <br/> <%for(var i =0;i<datalist.length;i++){%> <ol> <li><%=datalist[i]._id%></li> <li> <%= datalist[i].name %> <%= datalist[i].like%> </li> <li> <%= datalist[i].password %> <%= datalist[i].age%> <%= datalist[i].info%> </li> </ol> <%}%> </body> </html>
4)在routes(學(xué)名路由)文件夾下中的index.js中做以下改變
var express = require('express'); var router = express.Router(); /* var user = require('../bin/app2').user; */ var mongo = require('mongodb');// 加載mogodb模塊 var DB_CONN_STR = 'mongodb://localhost:27017/testdb1';//數(shù)據(jù)庫的地址 /* GET home page. 處理請求信息*/ router.get('/', function (req, res, next) { res.render('index1', {title: 'index1'}); }); /* login */ router.get('/login', function (req, res) { res.render('login', {title: 'login'}); }); /*驗(yàn)證用戶是否存在*/ var selectData = function (db, str, callback) { // 查找MongoDB是否含有相應(yīng)的集合 //連接到表 var collection2 = db.collection('user'); collection2.find(str).toArray(function (err, result) { if (err) { console.log('Error:' + err); return; } callback(result); }); } router.post('/ucenter', function (req, res) { //為驗(yàn)證請求添加路由 var query = {name: req.body.name, password: req.body.password}; mongo.connect(DB_CONN_STR, function (err, db) { console.log("連接成功!"); selectData(db, query, function (result) { if (result != 0) { console.log(query.name + ": 登陸成功 " + new Date()); res.render('ucenter', {title: 'ucenter'});//跳轉(zhuǎn)到指定頁面 } else { console.log(query.name + ": 登陸失敗 " + new Date()); res.redirect('/');//返回當(dāng)前頁面 } db.close(); }) }); }); /*查找所有數(shù)據(jù)*/ router.get("/checkall",function (req,res) { mongo.connect(DB_CONN_STR,function (err,db) { var collection = db.collection('user'); collection.find().toArray(function (err,result) { if(err){ console.log('ERROR'+err); res.redirect('/'); return; } console.log(result); res.render('checkinfo',{ datas:"Hello Noder" ,datalist:result ,reason:"由于你長得丑,服務(wù)器拒絕了你這次的訪問" }); db.close(); }); }); }) module.exports = router;
3.廢話這么多,重要出結(jié)果了
1)先看看MongoDB數(shù)據(jù)表里的數(shù)據(jù)
2)登錄界面
3)登陸成功
4)網(wǎng)頁返回全部數(shù)據(jù)
以上所述是小編給大家介紹的Node.js連接MongoDB數(shù)據(jù)庫產(chǎn)生的問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對億速云網(wǎng)站的支持!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。