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)