Node 实现增删改查

首先 app.js  中

app.use(koaBody({    
     strict:false 
}));
为了可以删除任意一个id
// 引入类
const Koa = require('koa');
const Router = require('koa-router');
const koaBody= require('koa-body')
const tagRouter=require("./routers/tag.router");
const userRouter=require("./routers/user.router");
const contentRouter=require("./routers/content.router");
// 引入内部方法或属性
// coust{方法或属性名} =require('koa');

// 创建对象
const app = new Koa();
app.use(koaBody({
     strict:false
}));

const router=new Router();  //创建路由,支持传递参数
tagRouter(router);
userRouter(router);
contentRouter(router); 

app.use(router.routes());
app.use(router.allowedMethods({ 
    // throw: true, // 抛出错误,代替设置响应头状态
    // notImplemented: () => '不支持当前请求所需要的功能',
    // methodNotAllowed: () => '不支持的请求方式'
}));

// localhost:3000
app.listen(3000,()=>{
  console.log("http://localhost:3000")
});

 

然后 mongodb.js

const mongoose=require("mongoose");  //导入
mongoose.connect("mongodb://127.0.0.1:27017/test")

const tagSchema= new mongoose.Schema({  //创建一个模型  对数据进行约束
    //  text: 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,
                default:false  //默认不置顶
            }
})

const userSchema= new mongoose.Schema({  //创建一个模型  对数据进行约束
    username:{
        type:String,
        minlength:2,
        maxlength:[12,"用户名最多12个字符"]
    },
    password:{
        type:String,
        validate: {  //对他验证
            validator: function(v) {
              return /[a-zA-Z0-9_]{6,12}/.test(v);  //验证器
            },
            message: "密码只能是6-12位的数字、字母和下划线的任意组合"
          },
        },
    Email:{
        type:String,
        validate: {  //对他验证
            validator: function(v) {
              return /\w+@\w+\.\w+/.test(v);  //验证器
            },
            message: "邮箱格式不正确"
          },
    },
    group:{
        type:String,
        enum:{
            values: ['限制会员','新手上路','组册会员','中级会员','高级会员'], //枚举
            message: '{VALUE} is not supported'
          }
    }
})
const tagModel=new mongoose.model("tag",tagSchema); //生成model,实现增删改查
const contentModel=new mongoose.model("content",contentSchema);
const userModel=new mongoose.model("user",userSchema);
// tagModel.
module.exports= {tagModel,contentModel,userModel}
 

 然后 tag.router.js  , content.router.js     user.router.js 

// 添加   删除
const {tagModel}=require("../mongodb");  //引入
const {success,fail}=require("../toast")

module.exports=function (router){   //导出
   //查询
    router.get("/tag",async (ctx)=>{
       try{
    const data= await tagModel.find({});
   return success(ctx,data);
  }catch(error){
    return fail(ctx,error)
  }
 })
      //添加
      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)
        }
      })
}

  content.router.js 

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

module.exports=function(router){
    router.get("/content", async ctx=>{
        try{
          const data= await contentModel.find({});
          return success(ctx,data);
        }catch(error){
          return fail(ctx,error)
        }
    })
       //添加
       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)
  }
})
 //更改
router.put("/content",async ctx=>{
  try{
    const data= await contentModel.updateOne(ctx.query,ctx.request.body);
    return success(ctx,data);
  }catch(error){
    return fail(ctx,error)
  }
})
}

 

再  toast.js   中   success,fail 与 tag.router.js  中    {success,fail}  相对应

module.exports={
    success:function(ctx,data=null){
        ctx.body={
            status:200,
            data:data,
            msg:""
        }
    },
    fail:function(ctx,msg){
        ctx.body={
            status:0,
            data:null,
            msg:msg.message||msg
        }
    }

}

 

再 test.http  ,用Send Request 查看结果

###查询
GET http://localhost:3000/tag

###添加
POST http://localhost:3000/tag
Content-Type: application/json

{
    "text":"HTml"
}

###删除
DELETE http://localhost:3000/tag HTTP/1.1
Content-Type: application/json

{
    "_id": "61a5c8b9b793e9ed045e57c2"
}

 再 test.http(第二种方法)  ,用Send Request 查看结果

@url=http://localhost:3000
@json=Content-Type: application/json

###查询
GET {{url}}/tag

###添加
POST {{url}}/tag
{{json}}

#content
//表单方式
#id=1000&name="张三"
{
    "text":"HTml"
}

###删除
DELETE http://localhost:3000/tag 
Content-Type: application/json

{
    "_id": "61a5c8b9b793e9ed045e57c2"
}



###查询
GET http://localhost:3000/content


###删除
DELETE http://localhost:3000/content
Content-Type: application/json

{
    "_id": "61a5c8b9b793e9ed045e57c2"
}



###查询
GET http://localhost:3000/user

###添加
POST http://localhost:3000/user
Content-Type: application/json

#content

{
    "username":"莹萍",
    "password":"123456 ",
    "Email":"2178625574@qq.com",
    "group":"限制会员"
}

###查询内容
GET {{url}}/content

###添加内容
POST {{url}}/content
{{json}}

{
  
    "title":"标dhudh题",
    "content":"fshduovhodf "
}

###修改内容
PUT {{url}}/content?_id=61a8848be4a6f108177fa8de
{{json}}

{
  "top":true
}

 

content.router.js     user.router.js    同理

 

posted @ 2021-11-30 22:33  翟莹萍  阅读(67)  评论(0编辑  收藏  举报