【翻译】Node.js 教程 —— 实战:todo app(6)

这节课我们继续 todo app 项目,为控制器加上与数据库交互的功能

'todoController.js'
'引入 mongoose'
var Mongoose = require('mongoose');

'连接 mlab'
Mongoose.connect('mongodb://test:[email protected]: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 技术栈

你可能感兴趣的:(【翻译】Node.js 教程 —— 实战:todo app(6))