demo1

  1. const router = require("koa-router")();
  2. const MovieModel = require("../../models/movie");
  3. router.get("/api/movie",async ctx=>{
  4. // ms是get传值传入的需要查询的集合名
  5. let {m} = ctx.query;
  6. try{
  7. //封装好的数据模型函数,参数是集合名
  8. var data = await MovieModel(m).find().sort({rating:-1});
  9. if(data.length){
  10. ctx.body = {
  11. code:200,
  12. res:data,
  13. request:"GET /api/top250"
  14. }
  15. }else{
  16. // 当m传入了值,但是值不是数据库里有的集合名字,就抛出异常,转跳到catch
  17. throw new Error("输入的字段不合法!mmm")//实际这里是不输出的
  18. }
  19. }catch{
  20. ctx.body = {
  21. code:400,
  22. msg:"输入的字段不合法!"
  23. }
  24. }
  25. })
  26. module.exports = router;

demo2

  1. router.post("/api/movieCollect/:m",async ctx=>{
  2. console.log(ctx.request.body);
  3. let {m} = ctx.request.params;//要更改的集合
  4. console.log('m:', m);
  5. let {id,collected} = ctx.request.body;//要更改的集合的某个值
  6. console.log('id:',id);
  7. try{
  8. // 这里m,id,coolected传入不存在的合集名字时,会继续向下运行,但是data值为空。
  9. //而m,id,coolected值不存在或者格式错误就会走catch;
  10. var data = await MovieModel(m).findByIdAndUpdate({_id:id},{$set:{collected}});
  11. console.log(data);
  12. if(data){
  13. ctx.body = {
  14. code:200,
  15. result:data,
  16. msg:"请求成功!"
  17. }
  18. }else{
  19. ctx.body = {
  20. code:400,
  21. msg:"请求的合集不存在"
  22. }
  23. }
  24. }catch(err){
  25. ctx.body = {
  26. code:400,
  27. msg:"参数不合法!"
  28. }
  29. }
  30. })