在把手中迭代数组和对象

时间:2017-04-10 06:38:59

标签: javascript node.js mongodb express

Schema.js

var ItemSchema = mongoose.Schema({
username: {
  type: String,
  index: true
},
 path: {
   type: String
 },
 originalname: {
   type: String
 }
});

var Item = module.exports = mongoose.model('Item',ItemSchema, 'iteminfo');

route.js

router.get('/', ensureAuthenticated, function(req, res){
  Item.find({},function(err, docs){
                res.render('welcome', {docs:docs});
        });
});

index.hbs

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    [list of data here!!!]
  </body>
</html>

我的路线代码是否正确?如何在index.js中显示所有数据?请帮忙。我是node.jsmongoDB的新手。谢谢:))

在mongo shell中,当我点击db.users.find()时,它有两个集合。我希望所需的输出在索引

中像这样
username = "username1"
path = "path1"
originalname = "originalname1"


username = "username2"
path = "path2"
originalname = "originalname2"

有可能吗?就像做一些foreach概念一样。

3 个答案:

答案 0 :(得分:3)

你的.hbs文件中的

  

您可以使用内置的每个帮助程序遍历列表。在块内,您可以使用它来引用正在迭代的元素。

<ul class="people_list">
  {{#each docs}}
    <li>{{this}}</li>
  {{/each}}
</ul>

以及包含数组

内对象的文档

[{}, {}, {}]

<ul class="people_list">
  {{#each docs}} // iterating over array, and #each below loops the properties of elements {}
    <li> {{#each this}} </li>  
       {{this}} // references the property values
    {{/each}}
  {{/each}}
</ul>

文档在这里

Iteration in Handlebars

答案 1 :(得分:0)

让我们考虑您的模型中有2个字段。名称和_id。您需要将其呈现给视图。

这里你需要'ejs'模块,一个用于在html中呈现数据的模板框架。

Server.js

var express = require('express');

var app = express();
app.set('views', __dirname + '/views');
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'ejs');

将所有观点保留在'parentfolder / views'..

routes.js

router.get('/', ensureAuthenticated, function(req, res){
Item.find({},function(err, docs){
            res.render('welcome', {docs:docs});  // here the welcome should be the file name of the html you need to render
    });
});

welcome.html

<table>
  <% for(var i=0; i < docs.length; i++) { %>
   <tr>
    <td><%= docs[i].id %></td>
    <td><%= docs[i].name %></td>
   </tr>
  <% } %>
</table>

以下是ejs语法。

您的样本输出将是这样的

<table>
 <tr>
   <td>1</td>
   <td>bob</td>
 </tr>
 <tr>
   <td>2</td>
   <td>john</td>
 </tr>
 <tr>
   <td>3</td>
   <td>jake</td>
 </tr>

答案 2 :(得分:0)

这是我的示例,在这种情况下,我要迭代主体表

keyvalue