2015-09-07 58 views
1

我有一個應用程序使用流量路由器及其酒吧/次機制。我也有一個集合和模板助手。該代碼是,在客戶端如何在Meteor中通過任意屬性找到一個集合項,但不能找到_id?

Template.theCase.helpers({ 
    theCase: function() { 
     var id = FlowRouter.getParam('id'); 
     var theCase = Cases.findOne({ 
      id: id 
     }); 

     return theCase; 
    } 
}); 

{{#with theCase}} 
    {{ id }} 
{{/with}} 

然後,在服務器

Meteor.publish('theCase', function (id) { 
    return Cases.findOne({ 
     id: id 
    }); 
}); 

,最後,在兩個(lib

FlowRouter.route('/case/:id', { 
    subscriptions: function (params) { 
     this.register('theCase', Meteor.subscribe('theCase', params.id)); 
    }, 
    action: function (params, queryParams) { 
     return BlazeLayout.render('container'); 
    } 
}); 

的問題,正如我所看到的那樣,這是一種幫助r返回undefined,因爲不允許通過_id以外的任何其他屬性查找集合中的項目。我如何克服它?我讀過一些關於pub/sub,helpers和routing的官方文檔,但我找不到解決方案。有什麼建議麼?

回答

1

您可以通過任何字段進行查詢。助手返回未定義,因爲它沒有找到任何匹配的東西。

這段代碼是有問題的:

Meteor.publish('theCase', function (id) { 
    return Cases.findOne({ 
     id: id 
    }); 
}); 

它應該是:return Cases.find({id: id});

出版物必須返回一個指針或致電this.ready()

+0

我遇到的問題是,正是因爲我想使用定製身份而不是mongo生成的'_id'。我有一個實質上是一個數字的屬性,它會增加。我知道這可能是反模式,但這正是我攻擊的問題。 –

+0

有可能有使用身份證的原因。這不是問題。我剛剛編輯了我的答案。我建議打印日誌以查看您實際期望找到的內容。 –

+0

我發現你的出版物有問題,並編輯我的回答 –