【问题标题】:Handlebars is not showing elements of objects inside an arrayHandlebars 未显示数组内对象的元素
【发布时间】:2020-06-27 08:51:37
【问题描述】:

我的项目代码在 5 个月前运行良好。现在我不明白为什么车把没有在任何列表中显示数据。我检查了后端,在那里我得到了类别数组,我可以 console.log 数组内的对象元素。这是我的后端代码:

// shows category list
exports.categoryList = async( req, res )=> {
  var category = await Cat.find()
  var count = 1
  category.map( doc=> doc.count = count++  )
  console.log(category)
  console.log(category[0].name)
  res.render('parents/categoryList', { category })
}

这些console.log的输出:

[ { subCategories: [],
    brands: [],
    enabled: false,
    discount: null,
    _id: 5e6f2a069894412b749e2fca,
    name: 'abcd',
    created: 2020-03-16T07:25:58.335Z,
    __v: 0 } ]
abcd

在车把中,我尝试打印从后端传递的类别变量:

<p>{{category}}</p>

{{#each category}}

count: {{this.count}} <br>
id: {{this._id}}<br>

{{/each}}

前端输出:

{ subCategories: [], brands: [], enabled: false, discount: null, _id: 5e6f2a069894412b749e2fca, name: 'abcd', created: 2020-03-16T07:25:58.335Z, __v: 0 }
count: 1
id: 

如您所见,我在后端代码中设置的计数变量不在类别对象内,而是在遍历类别数组时打印。谁能告诉我出了什么问题?

【问题讨论】:

    标签: node.js express handlebars.js


    【解决方案1】:

    .map 将返回数组。如果您将该数组保存在某个变量中,我相信它会起作用。

    const updArr = category.map( doc=> {
      const newDoc = {}
      newDoc = doc;
      newDoc.count = count++
      return newDoc;
    })
    console.log(updArr) // check output here
    res.render('parents/categoryList', { updArr })
    

    在前端尝试控制台 this 对象。我认为这个对象是您从后端获取它的 api 的响应。 this.count 是您的记录数。

    谢谢

    【讨论】:

    • 不工作。 updArr 在控制台中显示 [1,2,3,4,5]。但是我在类别中有一个查询结果,它被覆盖了。
    • 现在我正在获取带有计数的查询结果对象......这没关系。但在车把中只显示计数,但其他对象元素(如名称、_id)未显示。我的问题是,在给定的代码中,前后都工作得很好。我只修复了该项目的一些漏洞。这可能会导致问题。
    • 在前端试试控制台(这个),让我知道它在打印什么。
    • 据我了解您的代码。您在前端而不是数组上获取对象。试试 {{category._id}}
    • {{category._id}} 与您的代码显示什么。我的代码什么也没显示。 (我在数组中有多个对象)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    相关资源
    最近更新 更多