在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ Meteor發(fā)布和訂閱
Meteor結(jié)構(gòu)
Meteor部署
Meteor排序
Meteor事件
Meteor Blaze
Meteor第一個(gè)應(yīng)用程序
Meteor發(fā)布和訂閱
Meteor環(huán)境安裝配置
Meteor package.js
Meteor在手機(jī)上運(yùn)行
Meteor集合
Meteor模板
Meteor跟蹤器
Meteor發(fā)送郵件
Meteor計(jì)時(shí)器
Meteor ToDo App實(shí)例
Meteor軟件包管理
Meteor方法
Meteor表單
Meteor Assets資源
Meteor會(huì)話
Meteor EJSON
Meteor http
Meteor安全
Meteor核心API
Meteor check
Meteor帳號(hào)
Meteor教程

Meteor發(fā)布和訂閱

在我們的集合這章節(jié)中,你會(huì)發(fā)現(xiàn)所有的數(shù)據(jù)可在客戶端上訪問(wèn)。這是個(gè)安全問(wèn)題,可以使用發(fā)布和訂閱方法進(jìn)行處理。

刪除自動(dòng)發(fā)布

在這個(gè)例子中,我們將使用 PlayersCollection 集合有以下數(shù)據(jù)。如果不能確定Meteor中如何創(chuàng)建 MongoDB 集合,您可以查看我們的集合這一章。

為了確保我們的數(shù)據(jù),我們需要?jiǎng)h除包自動(dòng)發(fā)布,這是允許使用在客戶端的數(shù)據(jù)。
C:\Users\Administrator\Desktop\meteorApp>meteor remove autopublish 

在此步驟后,你會(huì)發(fā)現(xiàn),無(wú)法從客戶端獲取數(shù)據(jù)庫(kù)中的數(shù)據(jù)。只能在命令提示符窗口中的服務(wù)器端看到它。檢出下面的代碼 -

meteorApp/client/app.js

var PlayersCollection = new Mongo.Collection('playersCollection');
var myLog = PlayersCollection.find().fetch();
console.log(myLog);
命令提示符窗口將顯示整個(gè)集合有四個(gè)對(duì)象,而開(kāi)發(fā)者控制臺(tái)會(huì)顯示一個(gè)空數(shù)組?,F(xiàn)在,我們的應(yīng)用程序更安全。

使用發(fā)布和訂閱

比方說(shuō),我們要允許客戶端使用您的數(shù)據(jù)。要允許這一點(diǎn),我們需要在服務(wù)器上創(chuàng)建 Meteor.publish()方法。該方法將數(shù)據(jù)發(fā)送到客戶端。為了能夠接收和使用在客戶端的數(shù)據(jù),我們將創(chuàng)建Meteor.subscribe()方法。在該示例的結(jié)尾,我們檢索的數(shù)據(jù)庫(kù)。這段代碼可以在客戶端和服務(wù)器上運(yùn)行。

var PlayersCollection = new Mongo.Collection('playersCollection');

if(Meteor.isServer) {
   Meteor.publish('allowedData', function() {
      return PlayersCollection.find();
   })
}

if (Meteor.isClient) {
   Meteor.subscribe('allowedData');
};

Meteor.setTimeout(function() {
   var myLog = PlayersCollection.find().fetch();
   console.log(myLog);
   }, 1000);
我們可以看到,數(shù)據(jù)會(huì)記錄在開(kāi)發(fā)者控制臺(tái)和命令提示符窗口。

過(guò)濾客戶端數(shù)據(jù)

我們還可以發(fā)布數(shù)據(jù)的一部分。在這個(gè)例子中,我們只發(fā)布 name="John"的數(shù)據(jù)。
var PlayersCollection = new Mongo.Collection('playersCollection');

if(Meteor.isServer) {
   Meteor.publish('allowedData', function() {
      return PlayersCollection.find({name: "John"});
   })
}

if (Meteor.isClient) {
   Meteor.subscribe('allowedData');
};

Meteor.setTimeout(function() {
   myLog = PlayersCollection.find().fetch();
   console.log(myLog);}, 1000);
當(dāng)我們運(yùn)行這段代碼,命令提示符將記錄所有的數(shù)據(jù),而客戶端控制臺(tái)將只日志記錄兩個(gè)名稱(chēng)為 John 的對(duì)象。