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;
时间: 2024-10-15 21:04:32