Meteor发布和订阅

在我们的集合这章节中,你会发现所有的数据可在客户端上访问。这是个安全问题,可以使用发布和订阅方法进行处理。

删除自动发布

在这个例子中,我们将使用 PlayersCollection 集合有以下数据。如果不能确定Meteor中如何创建 MongoDB 集合,您可以查看我们的集合这一章。

为了确保我们的数据,我们需要删除包自动发布,这是允许使用在客户端的数据。
C:\Users\Administrator\Desktop\meteorApp>meteor remove autopublish 

在此步骤后,你会发现,无法从客户端获取数据库中的数据。只能在命令提示符窗口中的服务器端看到它。检出下面的代码 -

meteorApp/client/app.js

var PlayersCollection = new Mongo.Collection('playersCollection');
var myLog = PlayersCollection.find().fetch();
console.log(myLog);
命令提示符窗口将显示整个集合有四个对象,而开发者控制台会显示一个空数组。现在,我们的应用程序更安全。

使用发布和订阅

比方说,我们要允许客户端使用您的数据。要允许这一点,我们需要在服务器上创建 Meteor.publish()方法。该方法将数据发送到客户端。为了能够接收和使用在客户端的数据,我们将创建Meteor.subscribe()方法。在该示例的结尾,我们检索的数据库。这段代码可以在客户端和服务器上运行。

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);
我们可以看到,数据会记录在开发者控制台和命令提示符窗口。

过滤客户端数据

我们还可以发布数据的一部分。在这个例子中,我们只发布 name="John"的数据。
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);
当我们运行这段代码,命令提示符将记录所有的数据,而客户端控制台将只日志记录两个名称为 John 的对象。

以上是Meteor发布和订阅的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>