簡體   English   中英

(Handlebars / JSON)嵌套每個以讀取數組

[英](Handlebars/JSON) nested each to read array

我有一個family表,屬性member為數組。

第一個#each可以正常工作,但是我無法使第二個/嵌套的#each可以從family -table中的數組讀取數據(請參閱JSON部分)。

我嘗試了以下兩種方法,但均未成功:

  {{#each family}}                   |      {{#each family as |x|}}
    <h1>{{surName}}</h1>             |         <h1>{{x.surName}}</h1>
                                     |
    {{#each member}}                 |         {{#each x.member as |y|}}
       <h1>{{firstName}}</h1>        |            <h1>{{y.firstName}}</h1>
    {{else}}                         |         {{else}}
       <h1>Not working</h1>          |            <h1>Not working</h1>
    {{/each}}                        |         {{/each}} 
                                     |
  {{else}}                           |       {{else}}
      <h1>No family</h1>             |           <h1>No family</h1>
  {{/each}}                          |       {{/each}}

JSON:

//family collection
{
    "_id": {
        "$oid": "5a6a906492b7b30014b18111"
    },
    "date": {
        "$date": "2018-01-26T02:20:20.428Z"
    },
    "surName": "x",
    "members": [
        {
            "firstName": "x"
        },
        {
            "firstName": "y"
        },
        {
            "firstName": "z"
        }
    ]
}

路線:

const express = require("express");
const mongoose = require("mongoose");
const router = express.Router();

    require("../models/Family");
    const Family = mongoose.model("family");

    router.get('/', (req, res) => {
        Family.find({}) 
        .sort({ date: 'desc' })
        .then(family => {
          res.render('family/index', {
            family: family
          });
        });
    });    
module.exports = router;

編輯:

我的Family.js模型

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

//Create Schema
const FamilySchema = new Schema({
  surName: {
    type: String,
    required: true
  },
  firstName: {
    type: String,
    required: true
  },
  date: {
    type: Date,
    default: Date.now
  }
});

mongoose.model('family', FamilySchema);

您需要更改的兩個地方

  1. 您的家庭收藏必須是array而不是object
  2. 歸檔的數據是members而不是member

以下代碼有效

app.js

var express = require('express');
var exphbs  = require('express-handlebars');
var app = express();

app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');

app.get('/', function (req, res) {
    const family = [{
      "_id": {
          "$oid": "5a6a906492b7b30014b18111"
      },
      "date": {
          "$date": "2018-01-26T02:20:20.428Z"
      },
      "surName": "x",
      "members": [
          {
              "firstName": "x"
          },
          {
              "firstName": "y"
          },
          {
              "firstName": "z"
          }
      ]
  }]

    res.render('home', {
      family
    });
});

app.listen(3000);

home.handlebars

{{#each family as |family|}}                  
    <h1>{{family.surName}}</h1>           

    {{#each family.members as |member|}}                
       <h1>{{member.firstName}}</h1>       
    {{else}}                        
       <h1>Not working</h1>         
    {{/each}}                        

  {{else}}                          
      <h1>No family</h1>             
{{/each}}  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM