簡體   English   中英

流星反應收集數據

[英]Meteor reactive collection data

我得到幫助者的預訂/數據:

Template.dashboard.helpers  ({
    getUserBookings: function() {
        _deps.depend();
        var user = Meteor.user();    
        getBookingsClient(user.emails[0]['address'], function(err, res){
            if ( err ) { console.log("Booking get error.");
            } else {
                console.log("Booking get correct.");
                Session.set('bookingResponse', res);
            }
        });    
        return Session.get('bookingResponse') || "";
    }

在我的模板中:

 {{#if getUserBookings}}
      {{#each getUserBookings}}
          {{bookingName}}
      {{/each}}
 {{/if}}

如何使這些數據具有反應性? 我的意思是,當我在bookingName中更改例如bookingName時,它將立即在網站上更改它嗎?


更新:

if(Meteor.isClient) {
    getBookingsClient = function (email, callback) {
        Meteor.call('getBookings', email, callback);
    };
}


if(Meteor.isServer) {
    getBookings: function (email) {
        check(email, String);
        var bookings = Bookings.find({'clientDetails.email': email}).fetch();
        return bookings;
    },
}

關於Brendan Turner的答案的更多信息:要在Meteor中獲得反應性,您需要使用已定義的反應性源之一,或實現如文檔所示的一種: Docs

任何導致游標(從數據庫查詢返回)的內容都是反應性的。 要檢索游標,可以使用如圖所示的“ 發布和訂閱”模型。 發布您希望客戶端可以訪問的數據,並讓代碼訂閱以檢索數據。

模板助手是反應式計算。 如果它們具有反應性數據源,則它們將是反應性的。

您需要從服務器發布預訂信息,然后從客戶端進行預訂。 它可能看起來像這樣:

// server/publications.js
Meteor.publish('bookingData', function() {
    return Bookings.find({userId: this.userId});
});

// client/template.js
Template.dashboard.helpers({
    userBookings() {
        return Bookings.find({userId: Meteor.userId()});
    }
});

Template.dashboard.onCreated(function() {
    this.subscribe('bookingData');
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM