node+express搭建服务器,连接mongoDB写接口

以分类管理为例,编写接口

接着上次的讲解
  • 路由模块化以及配置路由,在上节都讲过了,如有不清楚,可以点开上次的进行学习。
  • 先在数据库中创建集合,并在集合中添加数据

通过接口进行添加数据

router.get('/test',function(req,res){
    Category.insertMany([
        {
            "category_id":"001",
            "category":"String",
            "name":"学历"
        },
        {
            "category_id":"002",
            "category":"String",
            "name":"新进员工工作经验"
        }
    ])
    Grade.insertMany([
        {
            "grade_id":"g_001",
            "category_id":"001",
            "name":"本科"
        },
        {
            "grade_id":"g_002",
            "category_id":"002",
            "name":"博士"
        }
    ])
    Level.insertMany([
        {
            "grade_id":"g_001",
            "level_id":"l_001",
            "name":"985、211院校"
        },
        {
            "grade_id":"g_002",
            "level_id":"l_002",
            "name":"一本院校、一本专业"
        }
    ])
})

集合创建好了,接下来写一些操作。

  • 获取category集合中所有的值
router.get("/getCategoryAccount", (req, res) => {
    Category.find({})
      .then(category => {
        res.json(category);
      })
      .catch(err => {
        console.log(err);
        res.json(err);
      });
 });

⭐️⭐️⭐️⭐️ $lookup的功能及用法

  • 主要功能

是将每个输入待处理的文档,经过$lookup 阶段的处理,输出的新文档中会包含一个新生成的数组列(户名可根据需要命名新key的名字 )。数组列存放的数据 是 来自 被Join 集合的适配文档,如果没有,集合为空(即 为[ ])

  • 基本语法
{
   $lookup:
     {
       from: <collection to join>,
       localField: <field from the input documents>,
       foreignField: <field from the documents of the "from" collection>,
       as: <output array field>
     }
}
  • 其中这些字段是干什么的呢 :
  • from: “要连接的表”,
  • localField: “当前Collection中需要连接的字段”,
  • foreignField: “外连Collection中连接查询的字段”,
  • as: "把获取到的的值赋值给这个字段
  • 查询出所有的等级,每个分类下的等级
  router.get("/getGradeBycateGory",function(req,res){
    Category.aggregate([{
        $lookup:{
            from:"grades",
            localField:"category_id",
            foreignField:"category_id",
            as:"item"
        }
    }],function(err,data){
        if(err){
            console.log(err);
            return;
        }
        res.json({
            status: '200',
            result:data,
        })
        console.log(JSON.stringify(data))
    }) 
}) 
  • 根据分类的category_id来显示与值相对应等级集合中的等级 这儿可以传入 分类的name
router.get("/getGradeBycateGory_list",function(req,res){
    console.log(req.query)
    let category_name = req.query.name;
    console.log(category_name)
    Category.aggregate([{
        $lookup:{
            from:"grades",
            localField:"category_id",
            foreignField:"category_id",
            as:"item_grade"
        }
    },{
        $match: {
            "name": category_name
        }
    }],function(err,data){
        if(err){
            console.log(err);
            return;
        }
        res.json({
            status: '200',
            result:data,
        })
        console.log(JSON.stringify(data))
    }) 
})
  • 三表查询 三级联动
  • 根据分类的category_id来显示与值相对应等级集合中的等级+等级下的级别
router.get("/getLevelByCategoryGrade",function(req,res){
    Grade.aggregate([{
        $lookup:{
            from:"categorys",
            localField:"category_id",
            foreignField:"category_id",
            as:"item_grade"
        }
    },
    {
        $lookup:{
            from:"levels",
            localField:"grade_id",
            foreignField:"grade_id",
            as:"item_level"
        }
    }],function(err,data){
        if(err){
            console.log(err);
            return;
        }
        res.json({
            status: '200',
            result:data,
        })
        console.log(JSON.stringify(data))
    }) 
})
  • 三级联动通过传值 传入category_id、grade_id
router.get("/getLevelByCategoryGrade_list",function(req,res){
    console.log(req.query);
    let category_id = req.query.category_id;
    let grade_id =req.query.grade_id;
    Grade.aggregate([{
        $lookup:{
            from:"categorys",
            localField:"category_id",
            foreignField:"category_id",
            as:"item_grade"
        }
    },{
        $match: {
            "category_id": category_id
        }
    },
    {
        $lookup:{
            from:"levels",
            localField:"grade_id",
            foreignField:"grade_id",
            as:"item_level"
        }
    },{
        $match: {
            "grade_id": grade_id
        }
    }],function(err,data){
        if(err){
            console.log(err);
            return;
        }
        res.json({
            status: '200',
            result:data,
        })
        console.log(JSON.stringify(data))
    }) 
})

你可能感兴趣的:(mongoDB,Node,Js,express,Vue)