zoukankan      html  css  js  c++  java
  • 使用node和express+mongodb实现数据增删改功能

    使用node和express+mongodb实现数据增删改功能:https://www.cnblogs.com/zhoulifeng/p/10197816.html

    2018即将过去,2019即将来临,前端技术不断在在更新,学的东西越来越多。我们只有不断的学习,才不能被淘汰。在前后端分离的一个时代,后端提供接口,前端调用接口,逻辑判断,每个都是独立的工作。如果自己在空余的时间,想学习新的知识,却没有好的接口,只能写写假的json数据。或者网上开源的数据库,mock,野狗数据库,firebase,或者使用本地的json-server搭建本地数据库使用也是完全没有问题的,也可以正常的实现数据的接口请求。

     今天小编就写一遍关于node写接口的文档,会从环境搭建,数据库链接,数据模型,接口文档以及到测试,一步一步的来,尽最大可能写好,让每一位读者都能看懂,文章可能过程,希望慢慢理解

       2018最后的一篇博客,希望在2019继续努力

    1.准备工作

    • postman接口测试工具,
    • node安装
    • mlab数据存储
    • mongodb数据库

    2.node + express环境搭建

    2.1环境搭建之前,首先要检查自己电脑是否安装node环境,如果没有安装,先安装node环境.

    2.2在自己电脑创建一个目录文件,打开自己终端,先进行初始化 cnpm init(在这里使用了cnpm国内镜像,如果没有安装,请自行安装cnpm);

    初始化之后会出现下面这个界面,会在我们的文件中生成一个package.json文件;

     

    2.3在自己根目录创建一个入口文件,app.js文件或者通过终端命令touch app.js创建一个文件,

    2.4这时候我们可以搭建服务器环境,但是需要依赖express,这时候我们就需要安装express

    cnpm install express

    2.5工作环境准备好之后,需要在我们的入口文件引入express,并创建一个app实列,请看下面,

      2.5.1:port是我们的端口号,app.listen是监听端口号运行

      2.5.2:然后通过node app.js运行,查看服务器是否正常运行成功,然后在浏览器出入http://localhost:5000,就可以查看运行的结果了

     2.6但是我们每次修改代码的时候都要重新运行node app.js,这个时候我们只需要安装nodemon,监听node变化的一个工具

    cnpm install nodemon -g  在这里是全局安装

    2.7:配置package.json启动命令,在开发环境的时候,直接可以通过cnpm run app来监听每次修改node的变化,nodemon我们已经全局安装过了,可以在任何地方都可以使用,只要我们每次修改代码都会发生变化,这样我们就不会手动输入命令了

           

    3.数据库mlab创建

    3.1:mlab是MongoDB提供的免费存储的数据库,使用的时候必须先注册,才可以使用,这个mlab需要翻墙注册,注册登录之后会出现下面的界面

    3.2然后点击Create  new 创建   》》》》  然后选择下面的两个,amazon和SANDBOX最后点击右下角CONTINUE,会跳转下一步

    3.3在这个界面选择国家地区,选择US EAST和Europe都可以,然后点击CONTINUE,会跳转下一步

    3.4在这个界面,需要我们输入一个名字,名字随便输入,然后点击CONTINUE,会跳转下一步,

    3.5在下一个页面,然后在点击SUBMIT ORDER,这样我们就创建好一个数据库,然后点击进入数据库中

    3.6进入我的数据库中,黄色警告提示我们需要创建一个用户信息,也就是我们最后链接的用户名和密码,点击add会弹出一个框,然后我门添加用户名和密码就可以了,最后点击CREATE,这样我们的数据库就已经创建完成了,接下来我们可以使用node链接我们的数据库了

    4.node链接MongoDB

    4.1安装mongoose链接数据库

    cnpm install mongoose

    4.2然后在你的入口文件引入(app.js),

    const mongoose require('mongoose')

    4.3在我们的根目录创建一个config文件,在confing中创建一个db.js文件,这个文件存放我们的数据库的地址,连接数据库的地址放在一个单独的文件,把我们服务器的地址引入过了就行了,修改用户名和密码就行了,

    4.4使用mongoose链接数据库,在我们的根目录引入config下面的db文件。然后通过mongoose链接数据,最后在控制台可以看到我们已经链接成功了,到现在为止,数据已经链接配置好了,接下来接开始写接口

    5.接口路由搭建和数据模型

    5.1在我们的根目录下创建一个router >>> api >>> useinfo.js文件,这个用于存放我们的请求接口的路由文件;

      5.1.1在userinfo文件中引入express和路由,先写一个get请求方法,

       

      5.2.2需要在我们的app.js文件引入userinfo.js文件,并使用router中间件,不然不会生效

    /api/userinfo:这个相当于我们访问的接口地址

    复制代码
    //引入userinfo.js
    const userinfo = require('./router/api/userinfo')
    
    
    //使用router中间件
    app.use('/api/userinfo',userinfo)

    然后就可以在浏览器输入http://localhost:5000/api/userinfo
    复制代码

     5.2postman接口测试工具使用

      5.2.1我们已经写好一个get的测试请求,接下来我们进行测试,我们可以通过postman这个工具进行测试,下载好之后需要登录注册,

      下载好之后打开这个工具,第一步输入我们的地址,点击send,就能看到我们请求的结果是否正确了

    5.3创建数据模型

    5.3.1创建我们的数据模型用于存放数据字段名。在根目录创建models文件,然后创建Userinfo.js文件,用于写数据字段模型。

    创建了name,age,sex,address,date几个字段名,(使用什么字段创建什么字段,在这里先使用这么多)

    mongoose.Schema是一个MongoDB对象建模工具,

    每一个Schema对应一个mongoDB collection 并且在那个collection里面定义了documents的模型。

    5.4编写路由接口,实现数据的添加,删除,修改功能

    在我们路由文件userinfo引入数据模型Userinfo文件,这样我们就可以查询数据库中是否有这些字段名了

    1
    const Userinfo =require('../../models/Userinfo')

    5.4.1添加用户信息

      添加用户信息肯定需要使用post去添加用户信息了,这时候我们需要安装第三方依赖body-parser

    cnpm install body-parser

      5.4.2在安装完之后,需要在app.js文件引入,并使用,这样我们就可以使用post进行数据存储了

    const bodyParser = require('body-parser')
    
    //使用body-parser中间件
    app.use(bodyParser.urlencoded({extended:false}));
    app.use(bodyParser.json());

    5.4.3添加数据接口,。先创建一个空的对,判断数据是否存在,如果不存在的话,通过new Userinfo添加数据库中,Userinfo就是我们上面引入的模型

    复制代码
    // $route  GET api/userinfo/add
    // @desc   添加用户数据
    // @access public
    router.post('/add',(req,res) => {
        const UserName = {};
        if(req.body.name) UserName.name = req.body.name;
        if(req.body.sex) UserName.sex = req.body.sex;
        if(req.body.age) UserName.age = req.body.age;
        if(req.body.address) UserName.address = req.body.address;
        
        new Userinfo(UserName).save().then(user => {
        res.json(user);
      });
    })
    复制代码

    5.4.4使用postman接口测试,请求接口类型是post请求,输入我们的接口地址,添加字段,点击send,就可以看到我们添加数据的字段了。

     

    5.5获取所有数据

    5.5.1通过get请求,获取数据库中所有的数据信息

    复制代码
    // $route  GET api/userinfo
    // @desc   获取所有的数据
    // @access public
    //find()是mongodb的数据库语法
    router.get("/", (req,res) => {
        Userinfo.find().then(user => {
            if(!user) {
                return res.status(400).json("没有任何数据存在")
            }
            return res.json(user)
        }).catch(err => {
            return res.status(404).json(err)
        })
    });
    复制代码

    5.5.1通过postman测试接口,http://localhost:5000/api/userinfo,就可以获取到我们数据库中所有的信息了,

     

    5.6获取单个用户信息

    5.6.1:通过根据用户的id去获取单个用户的信息

    复制代码
    // $route  GET api/userinfo/:id
    // @desc   获取单个的数据
    // @access public
    router.get('/:id',(req,res) => {
        Userinfo.findOne({_id:req.params.id}).then(user => {
            if(!user) {
                return res.status(400).json("没有任何数据存在")
            }
            return res.json(user)
        }).catch(err => {
            return res.status(404).json(err)
        })
    })
    复制代码

    5.6.2通过postman测试接口,http://localhost:5000/api/userinfo/5c27929b2a87821914f8b195,就可以获取到我们数据库中所需要的信息

    5.7编辑用户信息

    5.7.1编辑用户信息,也是根据用户的id去更新数据,通过monoose提供的findByIdAndUpdate去更新数据库

    复制代码
    // $route  GET api/userinfo/exit/:id
    // @desc   编辑用户信息
    // @access public
    
    router.post('/exit/:id',(req,res) => {
        const UserName = {};
        if(req.body.name) UserName.name = req.body.name;
        if(req.body.sex) UserName.sex = req.body.sex;
        if(req.body.age) UserName.age = req.body.age;
        if(req.body.address) UserName.address = req.body.address;
        //更新数据
        Userinfo.findByIdAndUpdate({ _id: req.params.id }, 
            { $set: UserName }, { new: true })
        .then(user => {
          if (!user) {
            return res.status(400).json("数据不存在");
          }
         res.json(user);
        })
        .catch(err => {
          return res.status(404).json(err);
        });
    })
    复制代码

    5.7.2这是我们更新第一个字段的用户信息,把张三的名字改成张飞,在postman中可以看到我们成功更新数据

    5.8删除用户信息

    5.8.1在这里,我们只删除根据用户的id删除,不会实现全部删除。

    复制代码
    // $route  GET api/userinfo/delete/:id
    // @desc   删除用户信息
    // @access public
    
    router.delete('/delete/:id',(req,res) => {
        Userinfo.findByIdAndRemove({_id:req.params.id}).then(user => {
            user.save().then(user => {
                res.json(user)
            })
        }).catch(err => {
            return res.status(404).json(err)
        })
    })
    复制代码

    5.8.2我们通过postman测试http://localhost:5000/api/userinfo/delete/5c27929b2a87821914f8b195,成功姓名为张飞的数据删除成功

    以上都是我们使用node+express实现的数据的添加,删除,修改功能。希望这篇博客能够帮助你。提前祝愿2019前端小伙伴元旦快乐,2019更上技术更上一层楼。

  • 相关阅读:
    微信小程序HTTPS
    微信商城-1简介
    va_list
    Event log c++ sample.
    EVENT LOGGING
    Analyze Program Runtime Stack
    unknow table alarmtemp error when drop database (mysql)
    This application has request the Runtime to terminate it in an unusual way.
    How to check if Visual Studio 2005 SP1 is installed
    SetUnhandledExceptionFilter
  • 原文地址:https://www.cnblogs.com/bydzhangxiaowei/p/13907983.html
Copyright © 2011-2022 走看看