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);
});



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM