这节课我们继续 todo app 项目,为控制器加上与数据库交互的功能
'todoController.js'
'引入 mongoose'
var Mongoose = require('mongoose');
'连接 mlab'
Mongoose.connect('mongodb://test:test@ds17195.mlab.com:17195/todo');
'创建 mongodb schema'
var todoSchema = new Mongoose.Schema({
item: String // 属性名是 item,类型是字符串
})
'创建 mongodb 数据模型'
var Todo = Mongoose.model('Todo', todoSchema); // 基于 schema 创建数据模型 Todo
var bodyParser = require('body-parser);
// 请求体的数据将会通过 bodyParser urlencode 方法解析
var urlencodedParser = bodyParser.urlencoded({ extended: false });
app.get('/todo', function(req, resp){
// 从 mongodb 获取数据并回传到视图中
Todo.find({}, function(err, result){ // 第一个参数若为空对象,则查找所有数据
if(err) throw err;
resp.render('todo', {
todos: result
})
})
});
app.post('/todo', urlencodedParser, function(req, resp){
// 向 mongodb 写入数据
Todo(req.body).save(function(err, result){
if(err) throw err;
res.json(result);
})
});
app.delete('/todo/:item', function(req, resp){
// 从 mongodb 获取数据并删除该纪录
Todo.find({item: req.params.item.replace(/\-/g, " ")}).remove(function(err, result){ // 第一个参数若为空对象,则查找所有数据
if(err) throw err;
resp.json(result)
});
});
然后启动项目,就能从浏览器上正常使用 todo app。
系列课程已经完结,接下来计划出下图对应的系列课程,去完善 node.js 应用。
MEAN 技术栈
网友评论