第三节、通用的CRUD接口

1、server->routes->admin

router.get('/',async (req,res)=>{

    const res =await req.Model.find().limit(100);

    res.send(res)

}) 

//但为了方便以后获取其他模型数据,我们可以直接写成

1、Category模型中新增parent字段

const schema = new mongoose.Schema({

    name:{type:String},

//ref:"Category"方便关联查询的查找

    parent:{type:mongoose.SchemaTypes.ObjectId,ref:"Category"}

})

2、

 router.get("/",async(req,res)=>{

       const queryOptions = {}

     //如果是Category模型才有parent

       if(req.Model.modelName === 'Category'){

      //关联查找parent

        queryOptions.populate = 'parent'

       }

        //找出parent这个列数据

        const items=  await req.Model.find().setOptions(queryOptions).limit(300)

         res.send(items)

     })

2、编辑接口        

//修改资源

    router.put("/:id",async(req,res)=>{

        const model =  await req.Model.findByIdAndUpdate(req.params.id,req.body);

         res.send(model)

     })

3、

//删除接口

     router.delete("/:id",async(req,res)=>{

         await req.Model.findByIdAndDelete(req.params.id,req.body);

         res.send({success:true})

     })

4.设置通用

//修改baseURL(:resource动态)和中间件

//npm i inflection

//直接获取路径中params的名字

//(classify)将首字母转化为大写,复数改为单数,对应模型名)

//这样每个路由都能使用到

app.use('/admin/api/rest/:resource',async(req,res,next)=>{

    const modelName = require("inflection").classify(req.params.resource)

    req.Model = require(`../../models/${modelName}`);

    next()

},router)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值