@參考文檔: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('/');
});
}
};