Zhu xiaohang's blog

express创建api服务器(接口)及数据库操作

express创建api服务器(接口)及数据库操作

1.前期准备工作

  1. npx express -e 项目名称

    其他安装方式

    ​ $ npm i express-generator -g
    ​ $ cnpm i express-generator -g
    ​ $ yarn add express-generator global

  2. 创建成功后会有一些目录文件夹,进入项目安装依赖 cnpm i

    bin ( www 启动了一个静态服务器( web服务器 ))
    node_modules 真个项目的依赖包
    public 静态资源文件
    routes 路由文件夹
    view(xxx.ejs 项目的模板)
    app.js 整个项目的入口文件

    package.json 整个项目的依赖配置文件


2.打造接口

  1. 项目环境搭建完成后,我们先找到routes文件夹,建一个port.js文件,先暴露接口文件(暴露port.js文件)然后找到app.js文件。

    //先要暴露接口
    const express = require('express');
    
    const router = new express.Router();
    
    module.exports = router;
    

    然后在app.js文件里引入我们在routes里创建的port.js文件:

    var portRouter = require('./routes/port');  
    

    继续在app.js文件里使用我们的这个文件:

    app.use('/port',portRouter);
    
  2. 紧接着,我们在port.js文件中打造接口,还需要在views目录下新建一个port.ejs文件

    const express = require('express');
    
    const router = new express.Router();
    
    router.get('/',( req,res,next ) => {
        res.render('port',{
            ports: JSON.stringify(
                [
                    {
                        id: 1,
                        content: '敲代码'
                    },
                    {
                        id: 2,
                        content: '打篮球'
                    }
                ]
            )
        })
    })
    
    module.exports = router;
    
  3. 前端请求这个接口的时候属于跨域请求,所以,需要一个应用级中间件(cors),我们可以在app.js文件中通过app.use 来使用这些中间件,中间件的分类:

    $ cnpm i cors -S 来安装cors

    在入口文件(app.js)中设置跨域的中间件

    /找到app.js文件
    var cors = require('cors')   
    //引入cors模块之后,在终端用命令安装cors模块
    //安装cors的命令   $ cnpm i cors -S
    
    app.use( cors ({
      "origin": "*",
      "methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
      "preflightContinue": false,
      "optionsSuccessStatus": 200
    }) )
    
  4. 找到views目录中的port.ejs文件:

    <%- ports %>  
    
  5. 使用后端接口测试工具测试一下接口

    //Insomnia后端接口测试工具测试的结果
    [
    	{
    		"id": 1,
    		"content": "敲代码"
    	},
    	{
    		"id": 2,
    		"content": "打篮球"
    	}
    ]
    

3.连接数据库

  1. cnpm i mongoose -D 安装mongoose

  2. 连接数据库

    1. 使用mongoose连接数据库的前提条件是:

      1、mongo数据库已经运行。

      2、已经安装了mongoose包

    2. var mongoose = require("mongoose");

      // 连接字符串格式为mongodb://主机/数据库名

      mongoose.connect('mongodb://localhost/student);

      // 连接本地mongodb ,本机的ip 127.0.0.1,端口:27017 数据库:student
      mongoose.connect("mongodb://127.0.0.1:27017/student",function(err){
         if(!err){//如果连接成功,则打印出connected to Mongodb
            console.log("connected to Mongodb");
         }else{
            throw err;//如果连接失败,则抛出异常
         }
      });
      

4.数据库的操作流程

存储数据步骤:定义Schema (骨架) > 创建model(模型)>Entity实例化方法。

注意:骨架不能操作数据库

​ 通过模型来操作

1、定义骨架

mongoose有一个Schema的方法,得到一个Schema 的构造函数,通过new这个构造函数得到骨架

var Schema = mongoose.Schema;
//通过Schema创建一个骨架  
var studentSchema  = new Schema({      
     name: String,
     age: String
});


2.创建模型

通过studentSchema 创建一个模型studentModel

var studentModel = mongoose.model("students",studentSchema  );//创建模型

var instance1 = new studentModel ();  //实例化模型得到实体
instance1.name="tangyan";
instance1.age="18";
//通过save方法保存
instance1.save(function(err){
    if (err) {
       console.log('保存失败');  
       return;
    }
 });


3.删除数据

思路:

1、删除数据首先要知道删除哪一条信息,需要知道信息的id.

2、把对应id的数据查询出来,执行remove方法

假如我们要删除id=”57e24521a755e1154039a403”的数据。

var id=”57e24521a755e1154039a403”; 
studentQueryModel.findById(id,function(err,doc){
   if(!doc){
      return next(new NotFound("Doc not found"))
   }else{
      doc.remove(function(){
         console.log('删除成功');
      })


  1. 修改数据

    修改数据的思路:先把对应id的数据查询出来,对需要修改的字段重新赋值,然后执行save方法保存。

    假如我们要修改id=”57e24521a755e1154039a403”的数据。

var id=”57e24521a755e1154039a403”; 

studentQueryModel.findById(id,function(err,doc){
   //console.log(doc);
   doc.name="xiaotangyan" ;//把name修改为xiaotangyan
   doc.save(function(err){
      if(!err){
          console.log('修改成功');
      }else{
         throw err;
      }
   });
});


5.查询数据

下面find第一个参数{}里面为空,表示查询所有的数据:
docs表示查询的结果集合,可用于渲染ejs模板引擎。

studentQueryModel.find({},function(err,docs){
	console.log(docs);
});


posted @ 2019-07-08 13:44  mckk  阅读(2355)  评论(0编辑  收藏  举报