Pug能够从mongo数据库Json访问嵌套数组

时间:2019-02-21 19:59:21

标签: arrays node.js json mongodb pug

我正在尝试从mongodb对象输出数组依赖项。我已经尝试了几乎所有方法,但是不断变得不确定。

我可以输出整个对象,但是我想要每个依赖项的名称版本。

{ _id: 5c6eea28c6c23a15beb43419,
  Repo_id: [ 1 ],
  name: 'express-ibm',
  version: '0.0.0',
  dependencies: 
   [ { name: 'async', version: '2.6.1' },
     { name: 'body-parser@1.18.3', version: '1.18.3' },
     { name: 'cookie-parser@~1.4.3', version: '1.4.3' },
     { name: 'debug@~2.6.9', version: '2.6.9' },
     { name: 'express@~4.16.0', version: '4.16.4' },
     { name: 'http-errors@~1.6.2', version: '1.6.3' },
     { name: 'mongoose', version: '5.3.13' },
     { name: 'morgan@~1.9.0', version: '1.9.1' },
     { name: 'pug@2.0.0-beta11', version: '2.0.0-beta11' } ] }



// Display detail page for a specific Repo
exports.repo_search = function(req, res, next) {
    Repo.findById(req.params.id).populate('repo').exec(function(err, repo) {
        if (err) {
            return next(err);
        }
        if (repo == null) {
            // No results.
            var err = new Error('Repo copy not found');
            err.status = 404;
            return next(err);
        }

        console.log(repo);
        Repo.find().exec(function(err, list) {
            if (err) {
                return next(err);
            }
            res.render('repo_info_detail', {
                title : 'Repo Detail',
                repo  : repo,
                list  : list

                //  repo_dependencies: results.repo_search
            });
        });

    });
};

哈巴狗:

  extends layout

    block content

      p#demo

      h1 #[Repository Name :] #{repo.name}

      dd #[ IBM Github URL:]
        a(href='/'+repo.url) #{repo.url}
      dd #[ Repository ID:] #{repo._id}
      dd #[ Language Type:] #{repo.filetype}
      dd #[Repo ID :] #{repo.Repo_id}
      //dd #[dependencies: ] #{repo.dependencies.name}



      div(class='col')
      div(class='col-sm-8')
      p
      button.hidediv Hide dependencies
      button.showdiv Show dependencies
      .divdemo
        | Dependencies
        .button
        a#export(href='#', role='button')
          | Click On This Here Link To Export The Table Data into a CSV File

        div(class='col')
        div(class='col-sm-3')
          table
          thead
            tr: th Name
            tbody

              each d in repo
                tr
                td 
                dd #{repo}

1 个答案:

答案 0 :(得分:0)

repo是一个javascript对象,您正在使用点语法(例如repo.namerepo.dependencies)正确访问其属性。但是,repo.dependencies是对象的数组。它没有可以使用点语法访问的name属性。相反,您必须遍历子对象并依次访问它们的每个name属性。

h1 Repository Name: #{repo.name}
dl
    dt IBM Github URL:
    dd #[a(href='/'+repo.url) #{repo.url}]
    dt Repository ID
    dd #{repo.Repo_id}
    dt Dependencies
    each dependency in repo.dependencies
        dd #{dependency.name} (v#{dependency.version})

看看pug tab interpolation的语法,看来您在示例中使用的语法不正确。

此外,请查阅有关dd元素的正确用法以及如何与dt元素一起使用的文档。它们还必须是描述列表(dl)元素的子元素:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dl