Express之------03 Nodejs+Express+Mongodb實現增刪改查(其實是mongoose的增刪改查操作)


@參考文檔:http://houzhiqingjava.blog.163.com/blog/static/167399507201311154854496/
@Express中mongoose的使用方法
1,首先要在Express項目的根目錄下新建一個models文件,改文件即MVC中的M,即實體對象文件。
2,在models文件夾中新建實體對象,注意對象名稱和mongodb中的表名稱要保持一致。
---例如,新建一個blog.js實體對象,那么mongodb中就會對應新建一個表blogs。
---例如,新建一個user.js實體兌現,那么mongodb中就會對應新建一個表users。
---model對象代碼格式如下:
var mongoose = require("mongoose");  //  頂會議用戶組件
var Schema = mongoose.Schema;    //  創建模型
//上邊為標准引用文件。

var blogSchema = new Schema({   //新建實體對象
  //對象中的屬性名,這里有多個屬性,並且包含嵌套對象,即一個屬性指向一個對象。
  title:  String,  
  author: String,
  body:   String,
  comments: [{ body: String, date: Date }],
  date: { type: Date, default: Date.now },
  hidden: Boolean,
  meta: {
    votes: Number,
    favs:  Number
  }
});

/*定義了一個新的模型Blog,但是此模式還未和users集合有關聯。建議第一個字母大寫。
就像一個類。
    這里的Blog名字可以隨意命名,它的作用僅限於是一個輸出的對象,在路由文件中引用
並使用。
*/
exports.Blog = mongoose.model('Blog', blogSchema);  
//此處Blog會自動對應數據庫中的blogs表


3,在指定的路由文件中,引用mongoose和實體對象:
var mongoose = require('mongoose');
var blogs = require('../models/blog').Blog;  
//這里名稱blogs必須要和數據庫中的表名稱一致,因為查詢的時候必須一樣,才能找到對應表

//並連接指定mongodb數據庫。
mongoose.connect('mongodb://localhost/hello-world');

//下邊就可以操作數據了。

4,增刪改查
(1),查
router.get('/blog-list.html',function(reg, res) {
    //查詢所有數據,保存到docs中,在頁面循環輸出
    blogs.find(function(err,docs){    
        console.log(docs);  //測試,輸出查詢獲得的對象,其實就是一個json文檔。
        res.render('blog-ejs',{title:'Express Demo Example',blog_list:docs});
        //這里blog-ejs是返回的頁面文件名稱。
        //這里blog_list對象,是個集合對象,供頁面調用。
    });
})
(2),增
//路由文件中處理post請求,add.htm頁面post提交的對應處理。
router.post('/add.htm',function(req,res){
    var demo=new blogs({ //這里blogs對象,即上邊引入的實體model對象。
    //demo可以隨意命名,只要new 對象名稱和上邊保持一致就行了。
        title:req.body.title,
        author:req.body.author
        //title和author是頁面提交的請求參數
    });
    console.log('creat----');
    demo.save(function(err,doc){
        console.log(doc);
        res.redirect('/');    
    });
})
//道理同上,只不過一個是跳轉頁面,一個是返回頁面
router.get('/bootstrap.html', function(req, res, next) {
  var blog=new blogs({
      title:'小時代4',
      author:'郭敬明',
      body:'the body of my blog. can you see that?'
  });
  blog.save();
  res.render('bootstrap', { title: 'bootstrap' });
});
(3),刪
router.get('/del.html', function(req, res, next) {
  var id=req.query.id;  //獲取url后的?id的值。get提交,就用query獲取參數
  console.log('id='+id);
  if(id&&''!=id){  
      member_integrals.findByIdAndRemove(id,function(err,docs){  //刪除執行函數
           console.log('delete-----'+docs);
           res.render('index', { title: 'Express Demo Example' });
      });
  }
});
(4),改(待測試)
exports.modify = function(req, res) {    
    var demo = {
        uid : req.body.uid,
        title: req.body.title,
        content : req.body.content
    };
    var id = req.body.id; //因為是post提交,所以不用query獲取id
    if(id && '' != id) {
        console.log('----update id = ' + id + "," + demo);
        Demo.findByIdAndUpdate(id, demo,function(err, docs) {
            console.log('update-----'+ docs);
            res.redirect('/');
        });
    }
};

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM