使用 mongoose 實現CRUD可以減少我們的工作量,因為它不用操作數據庫,而是直接操作對象的,下面就來看看CRUD的具體實現。
首先看一下整個目錄的結構:
項目目錄結構
首先對整個路由的設計:
app.js
const express = require('express');
const app = express();
const routers = require('./routers/routers');
app.set('view engine','ejs');
app.get('/',routers.showAdd);//添加頁面
app.get('/doAdd',routers.doAdd);//執行添加
app.get('/find',routers.find);//執行查找
app.get('/remove',routers.remove);//執行刪除
app.get('/update',routers.update);//執行修改
app.listen(3000);
然后在models文件夾中有對數據庫的連接和創建的模型;
db.js
/**
* Created by jiunuo on 2017/8/10.
*/
var mongoose = require('mongoose');
//創建數據庫連接
var db = mongoose.createConnection('mongodb://127.0.0.1/database');
//監聽open事件
db.once('open', function (callback) {
console.log("數據庫成功連接");
});
//向外暴露這個db對象
module.exports = db;
student.js
/**
* Created by jiunuo on 2017/8/10.
*/
const mongoose = require('mongoose');
var db = require("./db.js");
var studentSchema = new mongoose.Schema({
name : {type : String},
age : {type : Number}
});
//類是基于schema創建的。
var studentModel = db.model('student', studentSchema);
module.exports = studentModel;
routers.js中具體實現:
/**
* Created by jiunuo on 2017/8/10.
*/
const student = require("../models/student.js");
exports.showAdd = function (req, res, next) {
res.render('index')
};
// 添加學生
exports.doAdd = function (req, res, next) {
let name = req.query.name;
let age = req.query.age;
student.create({"name": name, "age": age}, function (err, result) {
if (err) {
res.send('添加失敗')
}
res.send('添加成功');
});
};
// 查找學生,分頁
exports.find = function (req, res, next) {
student.find('小紅', function (err, result) {
if (err) {
res.send('查詢失敗');
}
res.send(result);
}).skip(1).limit(1);
};
// 修改學生信息
exports.update = function (req, res, next) {
student.update({'name': '小紅'}, {$set: {"age": "1"}}, function (err, result) {
if (err) {
res.send('修改失敗')
}
res.send('修改成功')
})
};
// 刪除學生信息
exports.remove = function (req, res, next) {
student.remove({"name": "黃森"}, function (err, result) {
if (err) {
res.send('刪除失敗')
}
res.send('刪除成功')
})
};