2014-11-01 22 views
1

我有一個包含事務數組的文檔。我正嘗試使用正確的事務數據呈現收據模板。我只是將我的子文檔移動到一個數組中,我需要將這些助手轉換爲反映更改,但我不知道如何執行此操作。如何從我的Meteor幫助器中獲取我的mongo文檔的一部分?

這是我的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" 
    } 
] 

回答

2

什麼你所訪問看起來並不像一個蒙戈(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函數。

+0

我不確定你對Minimongo的意思。我使用Iron:路由器從URL參數設置的會話變量。我使用它的方式我仍然看到它的反應。 謝謝,這個效果很好。 – JoshJoe 2014-11-01 19:27:50

相關問題