如何从Meteor助手中获取我的mongo文档的一部分?

时间:2014-11-01 04:08:27

标签: mongodb meteor

我有一个包含一系列交易的文档。我正在尝试使用正确的交易数据呈现收据模板。我只是将我的子文档移动到一个数组中,我需要转换这些帮助以反映更改,但我不知道该怎么做。

这是我的js文件片段。

Template.Gift.helpers({
  displayReceipt: function () {
    var transaction_guid = Session.get('transaction_guid');
    var transaction_status = this.recurring.transactions[transaction_guid].status;
    return (transaction_status === 'succeeded');
  }
});

这是我的html文件片段。

<div class="Receipt">
    {{#if displayReceipt}}
        {{> Receipt}}
    {{else}}
    {{/if}}
</div>

如何更改此选项以从数组中提取正确的事务?

这是我的对象原来的样子。

"transactions": {
    "TX1234": {
        "guid": "TX1234",
        "amount": 102,
        "email_sent": false,
        "status": "succeeded"
    },
    "TX1235": {
        "guid": "TX1235",
        "amount": 102,
        "email_sent": true,
        "status": "failed"
    }
}

这是新的数组样式

transactions: [
    {
        "guid": "TX1234",
        "amount": 102,
        "email_sent": false,
        "status": "succeeded"
    },
    {
        "guid": "TX1235",
        "amount": 102,
        "email_sent": true,
        "status": "failed"
    }
]

1 个答案:

答案 0 :(得分:2)

您访问的内容看起来不像Mongo(Minimongo)实例。看起来您已将transactions直接拉入Javascript对象,这似乎无法使用Minimongo。

无论如何,如果交易在Minimongo中,这将是您使用的查询:

var item = SomeCollection.findOne({"transactions.guid": transaction_guid});
var transaction = _.findWhere(item.transactions, { guid: transaction_guid });

查询返回包含整个数组的文档,因为Meteor doesn't support MongoDB的$elemMatch projection尚未完成。因此,您必须自己过滤正确的元素,如上所述。我在这个例子中使用了下划线的findWhere函数。