美文网首页
【翻译】Node.js 教程 —— 实战:todo app(6)

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

作者: kyuan | 来源:发表于2019-03-26 22:00 被阅读0次

    这节课我们继续 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 技术栈

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/biywvqtx.html