• 关于node中mongodb数据库进行增删改查


    var bodyParser = require('body-parser')
    var mongoose = require('mongoose');
    
    // **************** MongoDB数据库 *******************
    // 连接数据库
    mongoose.Promise = global.Promise;
    mongoose.connect('mongodb://localhost/todo', {useMongoClient: true})
    .then(function(){console.log('MongoDB数据库连接成功')})
    .catch(function(err){ console.log(err)})
    
    // 创建数据库结构,表名为todolists
    var TodoList = mongoose.model('todolist', {
        id: Number,
        done: Boolean,
        title: String
    })
    
    // 测试代码:在数据库中todolists表存储数据
    // TodoList({id:100, done:false, title: "吃饭"}).save(function(err, data){
    //     if(err) throw err;
    //     console.log('保存成功')
    // })
    
    // **************** MongoDB数据库 *******************
    
    // 向外暴露函数,接收app对象
    module.exports = function(app){
        app.use(bodyParser.urlencoded({ extended: false }))
    
        // 1.获取数据的请求(GET)
        app.get("/", function(req, res){
            // 查询数据库中的所有数据
            TodoList.find({}, function(err, data){
                // 将所有数据返回给前端首页进行渲染
                res.render("index", {"todos": data});
            })
        })
    
    
        // **********下面开始拦截各种前端发起的请求***********
    
        // 2.拦截前端提交数据的POST请求
        app.post("/add", function(req, res){
            var obj = {id: Date.now(), done:false, title: req.body.title}
    
            // 往数据库中插入数据,并生成一个不重复的id主键
            TodoList(obj).save(function(err, data){
                if(err) throw err;
                res.send('ok')
            })
        })
    
    
        // 3.拦截前端提交数据的POST请求
        app.delete("/del/:id", function(req, res){
            var id = Number(req.params.id);
    
            // 查询数据库,根据id删除数据
            TodoList.find({"id":id}).remove(function(err, data){
                if(err) throw err;
                res.send('ok') //返回响应结果给前端
            })
        })
    
    
        // 4.拦截前端的PUT修改请求,修改代办事项状态
        app.put("/update/:id", function(req, res){
            var id = Number(req.params.id);
    
            // 修改代办事项状态为(是/否)
            TodoList.findOne({"id":id}, function(err, data){
                data.done = !data.done; //赋值修改
                data.save(); //保存
                res.send('ok'); //返回响应结果给前端
            })
        })
    
    
        // 5.拦截前端的PATCH修改请求,修改代办事项的内容
        app.patch("/update/:id", function(req, res){
            var id = Number(req.params.id);
    
            // 修改代办事项的title内容,方法1
            // TodoList.findOne({"id":id}, function(err, data){
            //     data.title = req.body.title; //赋值修改
            //     data.save(); //保存
            //     res.send('ok'); //返回响应结果给前端
            // })
    
            TodoList.update({"id":id}, {$set: {"title": req.body.title}}, function(err, data){
                res.send('ok'); //返回响应结果给前端
            })
        })
    }
  • 相关阅读:
    Hbase 统计行数的四种方式
    Solr、MongoDB和Hadoop比较
    三种方法更改MAC OS X下的HOSTS文件
    史上最全前端面试题(含答案)
    图文-水平垂直居中兼容ie6+
    CSS3动画
    jQuery延迟加载(懒加载)插件 – jquery.lazyload.js-Web前端(W3Cways.com)
    web app变革之rem
    MAC中通过gem命令安装compass
    mac下升级ruby环境版本
  • 原文地址:https://www.cnblogs.com/xuyx/p/11866941.html
Copyright © 2020-2023  润新知