Practical Training Json-模組化的新增、查詢、刪除的具體寫法(後臺)
阿新 • • 發佈:2021-11-30
本篇內容為:模組化的新增、查詢、刪除的具體寫法;具體的可檢視下面的詳情:
// 使用
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
本篇內容結束。