如何获取数组的内容以反映在我的模板中?

How do I get the contents of an Array to reflect in my template?

我的 return db.Collection.find().fetch() 游标正确反映了模板中的所有元素,数组中的元素除外。

如何让数组的内容反映在我的模板中?

以下是在浏览器控制台中看到的 db.Collection.find().fetch() 结果。

_id: "CJiuk6jjFEBLDQrQc"
postedDate: Wed Feb 15 2017 15:10:50 GMT+0300 (EAT)
descriptions: "Clothes"
viewStatisticsArray: Array[1]

在控制台中展开时,在 viewStatisticsArray: Array[1] 元素下方找到。

0: Object
nrOfViews: 3096
statsDate: "Tue Mar 07 2017 14:10:56 GMT+0300 (EAT)"

还有我的模板函数:

  'list': function(){
        return buyList.find({}).fetch();
    }

在我的模板中找到以下结果:

{{#each list}}
Posted Date: {{postedDate}} displays: Wed Feb 15 2017 15:10:50 GMT+0300 (EAT)
Description: {{descriptions}} displays: Clothes
View Stats: {{viewStatisticsArray.nrOfViews}}  {{viewStatisticsArray.statsDate}} FAILS to DISPLAY ANYTHING

{{/each}}

如何正确访问 viewStatisticsArray 数组的元素?

期待您的帮助。

{{#each items}}
    <div>{{postedDate}}</div>
    <div>{{description}}</div>
    <div>
    {{#each viewStatisticsArray}}
        {{nrOfViews}}
        {{statsDate}}
    {{/each}}
    </div>
{{/each}}

@SirBT 不确定你是如何进行迭代的,但上面的方法肯定有效。如果不是,唯一的原因可能是 viewStatisticsArray 没有被您的发布函数发送。

您可以尝试调用助手以您想要的任何方式访问数组。 如果您只是想获取一个字符串:

View Stats: {{getStats viewStatisticsArray}} 

js:

  'getStats': function(array){
        return array[0].nrOfViews + " " + array[0].statsDate;
    }

(如果您需要,请分别编写两个助手。)您也可以使用 server transform 更改服务器端的光标。

Meteor.publishTransformed('subName', function () {
   return db.Collection.find({}) 
     .serverTransform({
          statsObj : function(item){
              return item.viewStatisticsArray[0]
          }
     }
});

现在您实际上已经将数组变成了一个对象,并且可以像在模板 statsObj.nrOfViews 和 statsObj.statsDate.

中那样调用它