node.js - mongoose document tree 怎么通过查询获取整个文档树
黄舟
黄舟 2017-04-17 13:45:04
[Node.js讨论组]
  1. 问题:mongoose文档树怎么查询然后生成json对象

  2. schema:

    var ImoocSchema = new mongoose.Schema({
      id:Number,
      name:String,
      url:String,
      parent:String
    })

    在存入的时候parent是自己根据'course'+id 这样子的,所以我查的时候是从上往下查的。还有就是觉得这样嵌套是有问题的,看着太难看了

  3. 生成JSON

    exports.getLessondata = function(req,res){

     // 在设计数据库的时候就直接将字段设计好,后期查询树形结构数据的时候直接返回整个结构体
     var _id = req.body._id;
     //返回给请求的数据
     var data = {};
     Imooc.findById(_id,function(err,lesson){
       if(err){console.log(err);}
       var lessonId = 'course'+lesson.id;
       data.lessonName = lesson.name;
       data.chapters = []
       // 将章节数据写入到需要返回的给请求的data中
       Imooc.find({parent:lessonId},function(err,docs){
         for(var i = 0; i < docs.length; i++){
           var chapterName = docs[i].name
           data.chapters[i] = {};
           data.chapters[i].sections = [];
           data.chapters[i].name = chapterName;
           
           Imooc.find({parent:chapterName},function(err,docss){
             if(err){console.log(err);}
             // console.log(data.chapters[i].sections)
             for(var j = 0; j < docss.length; j++){
               var name = docss[j].name
               var url = docss[j].url
               var section = {name:name,url:url}
               //在我自己做的时候这个地方sections报错:undefined。
               data.chapters[i].sections.push(section)
             }
           })
         }
       })
     })

    }

  4. 新手渣渣代码

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(1)
高洛峰

生成javascript对象用lean(),自己看一下关于lean()的文档

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号