zoukankan      html  css  js  c++  java
  • 关于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'); //返回响应结果给前端
            })
        })
    }
  • 相关阅读:
    Java 强、弱、软、虚,你属于哪一种?
    为啥阿里巴巴规定要在 @Transactional 指定 rollbackFor?
    DataGrip 上手体验,真香!
    日志框架选型,Logback 还是 Log4j2?
    基于OpenLayers和ArcGIS Server REST的要素信息保存功能
    基于Openlayers和Arcgis Server REST实现地图(要素)点击查询功能
    使用OpenLayers加载ArcGIS Server矢量图层
    ArcGIS Server在线编辑功能
    使用OpenLayers显示百度地图
    如何分析SAP ABAP的SYSTEM_NO_ROLL运行时错误
  • 原文地址:https://www.cnblogs.com/xuyx/p/11866941.html
Copyright © 2011-2022 走看看