[英]Fetch latest data on client side from server in meteor app
我已经通过流星中的服务器代码创建了一个mongoDB集合:
//Server
Restaurants = new Mongo.Collection('restaurants')
if (Meteor.isServer) {
//This code only runs on the server
Meteor.publish('restaurants', function () {
return Restaurants.find();
});
}
每当数据库中的数据更改时,我都试图在客户端获取最新数据。
这是我的客户端代码:
//Client
Restaurants = new Mongo.Collection('restaurants');
var myData = "";
if (Meteor.isClient) {
Meteor.subscribe('restaurants');
myData = Restaurants.find();
};
感谢您!
为了完整起见,这是一个使用您的代码的快速修订示例,该示例显示了Tracker
工作方式。
Restaurants = new Mongo.Collection('restaurants')
if (Meteor.isClient) {
Meteor.subscribe('restaurants');
Tracker.autorun(() => {
const restaurant = Restaurants.findOne();
console.log(restaurant);
});
};
if (Meteor.isServer) {
Meteor.publish('restaurants', function restaurants() {
return Restaurants.find();
});
Meteor.startup(() => {
if (Restaurants.find().count() === 0) {
Restaurants.insert({
name: 'McDonalds',
});
}
});
}
由于首次调用Restaurants.findOne
时,尚未将任何餐厅数据推送到客户端,因此以上内容将首先undefined
日志记录到控制台。 通过将查找的内容包装在Tracker.autorun
,当将餐厅数据推送到客户端时,您的查找将重新运行,并且已加载的餐厅将被记录到控制台。 因此,您的控制台输出将如下所示:
undefined
Object {_id: "HAJpQxfq59KPmTwDA", name: "McDonalds"}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.