Meteor 發布與訂閱

2021-09-19 10:12:51 字數 1784 閱讀 6693

我們可以使用安全的方法讓使用者端不直接運算元據庫,但是還是可以直接讀取資料庫內容,如果我們還需要保護私有的資料儲存,在客戶端直接使用collection.find(),這樣的操作方式在實際的專案中並不會使用,這樣的資料無法保證私有性和安全性。如果一些資料我們並不想自動的在客戶端更新,就需要自定義publishsubscribe,如何在meteor中自定義發布與訂閱模式呢?

在 meteor:方法控制中我們移除了insecure,在這裡我們需要移除autopublish。顧名思義,autopublish的意思就是meteor自動的實現資料的publish/subscribe。

meteor remove autopublish

移除之後在我們新增資料以後,頁面就不再直接顯示資料了。想要顯示資料,我們需要使用meteor.publishmeteor.subscribe方法,讓服務端通知客戶端的資料更新。

if (meteor.isserver) );

}

if (meteor.isclient) , })

});});

在server端使用meteor.publish函式註冊乙個"languages"的發布者,需要在客戶端對"languages"進行訂閱,使用meteor.subscribe訂閱了"languages",現在已經新增的資料就會重新出現在頁面上。

利用發布/訂閱模式,我們也可以實現對於私有資料的訪問。

在頁面上新增乙個private的按鈕:

}

delete

update

}private}}

新增設定為privte的方法:

meteor.methods();

},updatelanguage: function (_id)

})},

removelanguage: function (_id) ,

setprivate: function (_id) })}

});

客戶端呼叫設定privte的方法:

template.other_event.events(,

'click .update': function () ,

'click .private': function ()

});

在meteor.publish的可以使用filter過濾掉不是改使用者的,非私有的資料:

meteor.publish("languages", function () 

//auth user

//,]

});});

測試這樣的資料可以使用不通的使用者在不通的瀏覽器上面做測試,每個使用者都是只能看到自己的資料。

只允許使用者對於自己的資料進行刪除操作

removelanguage: function (_id) 

languages.remove(_id);

}

這樣我們就能保證私有資料的安全,客戶端不能直接運算元據(remove insecure),客戶端也不直接訪問資料庫(remove autopublish),就有效的保護私有資料的安全。

專案位址 :

Meteor發布 訂閱

詳解 發布和訂閱是meteor的重要部分。meteor資料庫在服務端有mongo 本地有minimongo,這是moteor重寫本地mongo。推送資料庫子集到客戶端。這樣呢伺服器就不需要再傳送html到本地了,而是傳送直實的原始資料。讓客戶端決定如何處理資料。不用再等待伺服器傳回資料,而是立即訪問...

發布與訂閱

redis的發布與訂閱功能由publish subscribe psubscribe命令組成。1 subscribe命令 客戶端可以訂閱乙個或多個頻道,從而成為這些頻道的訂閱者 subscriber 每當有其他客戶端向被訂閱的頻道傳送訊息 message 時,頻道的所有訂閱者都會收到這條訊息。127...

mysql訊息訂閱與發布 發布 訂閱配置

public ibus bus public void handle mymessage message bus.publish e e.someproperty xyz 公共汽車 屬性將自動由基礎設施。這就是所謂的 依賴注入 所有開發完成了nservicebus利用這些模式。技術作為nservic...