客户端和服务器流星之间的共享集合

时间:2015-05-25 17:29:43

标签: javascript mongodb collections meteor client

流星初学者。只要了解一切如何运作,请耐心等待。

在一个文件中一切正常,但在安装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"未在客户端中定义。发生了什么事?如何连接集合?

3 个答案:

答案 0 :(得分:3)

经典架构:

var databaseVersion = GetCurrentDacVersionFromDatabase(dbConnString); var dacPackage = DacPackage.Load(dacPacPath); if (dacPackage.Version > databaseVersion) { var dacServices = new DacServices(dbConnString); // Change any dacDeployOptions here. var dacDeployOptions = new DacDeployOptions {RegisterDataTierApplication = true}; dacServices.Deploy(dacPackage, "BioMasterMain", true, dacDeployOptions); <-- Fails here }

lib/streams.js

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

server/streams.js

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

client/streams.js

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

如果您使用autopublish包,默认情况下。你只需要做

  

LIB / streams.js

     

Streams = new Meteor.Collection(“streams”);

一部分。