標籤:-- find 函數 頁面 ann ted 存在 串連失敗 地址
01.js
/** *最先的後台語言是Asp(微軟的), */var express = require("express");//資料庫引用var MongoClient = require(‘mongodb‘).MongoClient;var assert = require(‘assert‘);//調試用的:assert.equal(null,err);出錯停止執行下面語句var app = express();//資料庫連接的地址,最後的斜杠表示資料庫名字,資料庫不存在會建立var shujukuURL = ‘mongodb://localhost:27017/itcast‘;app.get("/",function(req,res){ //串連資料庫,這是一個非同步操作 MongoClient.connect(shujukuURL, function(err, db) { if(err){ res.send("資料庫連接失敗"); return; } res.write("恭喜,資料庫已經成功串連 \n"); db.collection("teacher").insertOne({"name":"哈哈"},function(err,result){ if(err){ res.send("資料庫寫入失敗"); return; } res.write("恭喜,資料已經成功插入"); res.end(); //關閉資料庫 db.close(); }); });});app.listen(3000);
02.js
/** * Created by Danny on 2015/9/23 17:24. */var express = require("express");var MongoClient = require(‘mongodb‘).MongoClient;var assert = require(‘assert‘);var app = express();app.set("view engine","ejs");//資料庫連接的地址,最後的斜杠表示資料庫名字var shujukuURL = ‘mongodb://localhost:27017/itcast‘;app.get("/",function(req,res){ //先串連資料庫,對資料庫的所有操作,都要寫在他的回呼函數裡面。 MongoClient.connect(shujukuURL, function(err, db) { if(err){ //res.write("資料庫連接失敗"); return; } //res.write("恭喜,資料庫已經成功串連 \n"); //查詢資料庫,cursor遊標,遊標可以用each方法遍曆 //每次表示一條document var result = []; var cursor = db.collection(‘teacher‘).find( ); cursor.each(function(err, doc) { if(err){ //res.write("遊標遍曆錯誤"); return; } if (doc != null) { result.push(doc); } else { //console.log(result); //遍曆完畢 db.close(); res.render("index",{ "result" : result }); } }); });});app.get("/add",function(req,res){ res.render("add");//add頁面});app.get("/tijiao",function(req,res){ //得到參數 var name = req.query.name; var age = req.query.age; var yuwenchengji = req.query.yuwenchengji; var shuxuechengji = req.query.shuxuechengji; MongoClient.connect(shujukuURL, function(err, db) { if(err){ console.log("資料庫連接失敗"); return; } db.collection("teacher").insertOne({ "name" : name, "age" : age, "score" : { "shuxue" : shuxuechengji, "yuwen" : yuwenchengji } },function(err,result){ if(err){ console.log("資料庫寫入失敗"); return; } res.send("恭喜,資料已經成功插入"); res.end(); //關閉資料庫 db.close(); }); });});app.listen(3000);
03.js
var express = require("express");var app = express();var MongoClient = require(‘mongodb‘).MongoClient;app.get("/",function(req,res){ //url就是資料庫的地址。/表示資料庫 //假如資料庫不存在,沒有關係,程式會幫你自動建立一個資料庫 var url = ‘mongodb://localhost:27017/haha‘; //串連資料庫,每個使用者請求來就開啟資料庫最後又關閉資料庫(php也是每次開啟資料庫後關閉資料庫) MongoClient.connect(url, function(err, db) { //回呼函數表示串連成功做的事情,db參數就是串連上的資料庫實體 if(err){ console.log("資料庫連接失敗"); return; } console.log("資料庫連接成功"); //插入資料,集合如果不存在,也沒有關係,程式會幫你建立 db.collection(‘student‘).insertOne({//產生的id前幾位是時間戳記後面是機器碼,全球唯一 "name" : "哈哈", "age" : parseInt(Math.random() * 100 + 10) }, function(err, result) { if(err){ console.log("插入失敗"); return; } //插入之後做的事情,result表示插入結果。 //console.log(result); res.send(result); db.close(); }); });});app.listen(3000);
分頁:
一、資料庫分頁,想想我們的百度百家Ajax案例,當時調用了百度的JSON,有一個參數叫做page=3,產生的JSON不一樣。這個就是分頁,就是我們想尋找所有的新聞,但是是位於第3頁的新聞。那麼有兩種做法:1) 錯誤的做法: 就是講所有的result都讀取到數組,然後進行資料操作,進行分頁;2) 正確的做法: 就是真的在資料庫中,唯讀取這麼多內容。錯誤的,我們試圖每次都讀取全部資料,但是這樣開銷很大。1 var a = [];2 db.find("student",{},function(err,result){3 for(var i = 10 * page ; i < 10 * (page + 1) ; i++){4 a.push(result[i]);5 }6 res.send(a);7 });所以,mongodb提供了傻傻的兩個函數。limit():讀取的條數, skip():跳過多少條加入,第一頁是page=0。每頁10條,所以當前頁的查詢語句1db.student.find({}).limit(10).skip(page*10)資料總數怎麼得到?shell中1db.student.stats().count;
node13---node使用mongodb