1. 程式人生 > 其它 >Practical Training Json-模組化的新增、查詢、刪除的具體寫法(後臺)

Practical Training Json-模組化的新增、查詢、刪除的具體寫法(後臺)

本篇內容為:模組化的新增、查詢、刪除的具體寫法;具體的可檢視下面的詳情:

// 使用

app.use(koaBody({

// 關閉嚴格模式 來獲取引數 獲取非post的引數

strict: false

}));

在後臺啟用前需要nodemon app.js 啟動應用程式

app.js內容:

引入函式:

mongodb.js內容:

// 1.先匯入 引用
const mongoose = require("mongoose");
// const userRouter = require("./routers/user.router");
// 連結 建立資料庫連結 進行增刪改查  mongodb:識別大小寫 注意大小寫的問題
mongoose.connect("mongodb://127.0.0.1:27017/text");
// 2.先建立模型 對資料進行約束
// 使用者
const userSchema = new mongoose.Schema({
    // text:{
    //     type: String,
    //     minlength:2,
    //     maxlength:12
    // },
    username:{
        type:String,
        minlength:6,
        maxlength:12
    },
    password:{
        type:String,
        minlength:2,
        maxlength:12
    },
    email:{
        type:String,
        minlength:6,
        maxlength:12
    },
    group:{
        type:String
    }
});


// 標籤
const tagSchema = new mongoose.Schema({ // Schema模式 模型 如果沒有模型 這個裡面可以隨便加東西 、{}裡是約束
    // text:String, // String 型別的文字
    text: {
        type: String,
        minlength: 2,
        maxlength: 12
    }

});

// 內容
const contentSchema = new mongoose.Schema({
    title:{
        type: String,
        minlength:6,
        maxlength:12
    },
    content:{
        type: String,
        minlength:10,
        maxlength:50
    },
    top:{
        type:Boolean
    }
});


// 3. 生成
// 集合名稱  
const tagModel = new mongoose.model("tag", tagSchema);
const userModel = new mongoose.model("user", userSchema);
const contentModel = new mongoose.model("content", contentSchema);
// tagModel

// 匯出tagModel 匯出之後就可以在tagModel寫增刪改查,上面的 tagSchema只在此頁面用 外邊用不了
module.exports = {tagModel,userModel,contentModel};
// 這個地方的連結需要在前面也得有個相應的更改
// module.exports = {tagModel,userModel,contentModel};
// module.exports = userRouter;

// const arr=[{text:"HTML"},{text:"QSL"},{text:"NodeJs"}]
// // tagModel.insertMany 集合 可以插入集合
// // arr :   、 function(error 返回錯誤資訊,docs  內容)是回撥函式 、 
// tagModel.insertMany(arr,function(error,docs){
//     console.log(error);
//     console.log(docs);
// })

tag.js內容:

// tag是標籤的資料夾   模組化
// 匯入 tagModel
// const {tagModel}  這個是三個方法同時用的時 需寫的正確方法
const {tagModel} = require("../mongodb");
const { success, fail } = require("../toast")

/* 
    // 獲取引數的方式 : get && post 
    get     ctx.query
    
    post    ctx.request.body
    // 刪除
    delete  ctx.request.body
    // 修改  需要有兩個引數 
    put     ctx.query   ctx.request.body
*/
// 新增  刪除
module.exports = function (router) {
    // get實現查詢
    // "請求路由" , async ctx 處理函式 處理的是{}的內容
    router.get("/tag", async (ctx) => {
        // const arr = [{ text: "HTML" }, { text: "QSL" }, { text: "NodeJs" }]
        // // tagModel.insertMany 集合 可以插入集合
        // // arr : 陣列內容/陣列 、 function(error 返回錯誤資訊,docs  內容)是回撥函式 、 
        // tagModel.insertMany(arr, function (error, docs) {
        //     console.log(error);
        //     console.log(docs);
        // })
        // 更改為查詢 因為上面的程式碼會點一次增加一次 
        // await 這個是將非同步轉換為同步  | tagModel.find({}); 這個是非同步呼叫
        try{
            const data = await tagModel.find({});
            return success(ctx,data);
        }catch(error){
           return fail(ctx,error)
        }
        // ctx.body = "tag";
        // 返回所以的標籤列表
        /* 
            "status":200,
            "data":{},
            "msg":"錯誤資訊"
         */
    });

    // 新增  post用ctx.request.body 獲取|get 用ctx.request
    router.post("/tag", async ctx => {
        try{
            const data = await tagModel.create(ctx.request.body);
            return success(ctx,data);
        }catch(error){
            return fail(ctx,error)
        } 
    })
    // 刪除
    router.delete("/tag", async ctx => {
        try{
            const data = await tagModel.deleteOne(ctx.request.body);
            return success(ctx,data);
        }catch(error){
            return fail(ctx,error)
        }
    })
}

user.js內容:

// 使用者 路由 模組化 

// 匯入userModel
const{userModel} = require("../mongodb");
const { success, fail } = require("../toast");
// const{success,fail} = require("../toast");

// 匯出函式
module.exports = function (router) {
    // "請求路由" , async ctx 處理函式 處理的是{}的內容
    router.get("/user", async ctx => {
        // ctx.body = "user";
        try{
            const data = await userModel.find({});
            return success(ctx,data);
        }catch(error){
            return fail(ctx,error);
        }
    });
     // 新增  post用ctx.request.body 獲取 | get 用ctx.request
     router.post("/user", async ctx => {
        try{
            const data = await userModel.create(ctx.request.body);
            return success(ctx,data);
        }catch(error){
            return fail(ctx,error)
        } 
    });
    // 刪除
    router.delete("/user", async ctx => {
        try{
            const data = await userModel.deleteOne(ctx.request.body);
            return success(ctx,data);
        }catch(error){
            return fail(ctx,error)
        }
    })
}

content.js內容:

// 內容 路由 模組化 

// 匯入 contentModel
const { contentModel } = require("../mongodb");
const { success, fail } = require("../toast");

// 函式
module.exports = function (router) {
    // "請求路由" , async ctx 處理函式 處理的是{}的內容
    router.get("/content", async ctx => {
        // ctx.body = "content";
        try {
            const data = await contentModel.find({});
            return success(ctx,data);
        } catch (error) {
            return fail(ctx, error);
        }
    });
     // 新增  post用ctx.request.body 獲取 | get 用ctx.request
     router.post("/content", async ctx => {
        try{
            const data = await contentModel.create(ctx.request.body);
            return success(ctx,data);
        }catch(error){
            return fail(ctx,error)
        } 
    });
    // 刪除
    router.delete("/content", async ctx => {
        try{
            const data = await contentModel.deleteOne(ctx.request.body);
            return success(ctx,data);
        }catch(error){
            return fail(ctx,error)
        }
    })
}

text.http內容:

# tag標籤
### 查詢
GET http://localhost:3000/tag

### 新增
# post 是程式碼段 
# POST 是字母
# POST和Content-Type 中間不能加空格、否則會執行不出來/a裡面的內容 也會報錯
POST http://localhost:3000/tag
Content-Type: application/json
// 引數解析
# 首先明確一點,這也是一種文字型別(和text/json一樣),表示json格式的字串,如果ajax中設定為該型別,則傳送的json物件必須要使用JSON.stringify進行序列化成字串才能和設定的這個型別匹配。

# 上面的內容和下面的中間得有一個空行、否則會報錯
# content 測試 傳的東西 也是內容
# content #一種是表單方式、一種是json方式
# id=1000&name=張三
# "id":1000,
{
   
    // "text":"張三",
}
 
# 當要執行時,需要把點選上面的Send Request

### 刪除  (### 三個/三個以上的#會自動識別Send Request )
DELETE http://localhost:3000/tag HTTP/1.1
Content-Type: application/json

{
    // 注意識別id的寫法
    "_id":"61a5c0ab39997ea6ad63a7c1"
}

# user 使用者
### 查詢
GET http://localhost:3000/user

### 新增
# post 是程式碼段 
# POST 是字母
# POST和Content-Type 中間不能加空格、否則會執行不出來/a裡面的內容 也會報錯
POST http://localhost:3000/user
Content-Type: application/json
// 引數解析
# 首先明確一點,這也是一種文字型別(和text/json一樣),表示json格式的字串,如果ajax中設定為該型別,則傳送的json物件必須要使用JSON.stringify進行序列化成字串才能和設定的這個型別匹配。

# 上面的內容和下面的中間得有一個空行、否則會報錯
# content 測試 傳的東西 也是內容
# content #一種是表單方式、一種是json方式
# id=1000&name=張三
# "id":1000,
{
   
    // "text":"張三",
    "username":"小王同學和小張同學",
    "password":"zzz22222",
    "email":"[email protected]",
    "group":"123"

}
 
# 當要執行時,需要把點選上面的Send Request

### 刪除  (### 三個/三個以上的#會自動識別Send Request )
DELETE http://localhost:3000/user HTTP/1.1
Content-Type: application/json

{
    // 注意識別id的寫法
    "_id":"61a5c0ab39997ea6ad63a7c1"
}

# content 內容
### 查詢
GET http://localhost:3000/content

### 新增
# post 是程式碼段 
# POST 是字母
# POST和Content-Type 中間不能加空格、否則會執行不出來/a裡面的內容 也會報錯
POST http://localhost:3000/content
Content-Type: application/json
// 引數解析
# 首先明確一點,這也是一種文字型別(和text/json一樣),表示json格式的字串,如果ajax中設定為該型別,則傳送的json物件必須要使用JSON.stringify進行序列化成字串才能和設定的這個型別匹配。

# 上面的內容和下面的中間得有一個空行、否則會報錯
# content 測試 傳的東西 也是內容
# content #一種是表單方式、一種是json方式
# id=1000&name=張三
# "id":1000,
{
   
    "title":"內容++++++",
    "content":"孝文帝會不會是會是會是會是會是會是",
    "top":true

}
 
# 當要執行時,需要把點選上面的Send Request

### 刪除  (### 三個/三個以上的#會自動識別Send Request )
DELETE http://localhost:3000/content HTTP/1.1
Content-Type: application/json

{
    // 注意識別id的寫法
    "_id":"61a5c0ab39997ea6ad63a7c1"
}

目錄詳情:

記得終端需要啟動:nodemon app.js

本篇內容結束。