客户端和服务器之间的共享收集

Shared Collection Between Client and Server Meteor

本文关键字:共享 之间 服务器 客户端      更新时间:2023-09-26

流星新手。我只是在学习如何运作,所以请耐心等待。

在一个文件中一切都工作得很好,但是在安装iron:router以拥有多页应用程序之后,我意识到最好有单独的客户端和服务器文件。不幸的是,现在我在服务器和客户机之间同步集合时遇到了麻烦。我读了很多教程,但是都没用。

我的server.js文件:

Streams = new Meteor.Collection("streams"); 
 if (Meteor.isServer) {
  Meteor.publish('streams', function () {
  return Streams.find();
 });
}

在我的client.js文件:

if(Meteor.isClient) {
   Meteor.subscribe("streams");
   Template.body.helpers = function(){
     return Streams.find();
 }
}

调试后,显示客户端没有定义"Streams"。这是怎么呢我如何连接集合?

经典建筑:

lib/streams.js

Streams = new Meteor.Collection("streams"); 

server/streams.js

Meteor.publish("streams", function () {
  return Streams.find();
});

client/streams.js

Meteor.subscribe("streams");
Template.body.helpers({
  streams: function(){
    return Streams.find();
  }
});

您还需要在客户端上定义Streams

if(Meteor.isClient) {
   Streams = new Meteor.Collection("streams"); 
   Meteor.subscribe("streams");
   Template.body.helpers = function(){
     return Streams.find();
   }
}

如果您使用自动发布包,这是默认的。你只需要做

lib/streams.js

Streams = new Meteor.Collection(" Streams ");