使用 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('删除成功')
})
};