无法在流星中访问客户端的集合

时间:2018-04-21 03:52:10

标签: javascript meteor

我有一个Meteor应用程序,我在

中声明了一个集合
imports/api/Dictionary.jsx

在该文件中:

export const dict = new Mongo.Collection('Dictionary');

然后导出它并尝试获取客户端文件夹中的数据:

import { Meteor } from 'meteor/meteor';
import {dict} from "../imports/api/Dictionary.jsx";

Meteor.startup(() => {

console.log(dict.find().fetch());

});

但是在控制台中没有显示任何内容。我已尝试在服务器和侧面导入和获取,一切正常。我还安装了autopublish包。

3 个答案:

答案 0 :(得分:1)

即使使用自动发布,在客户端启动时,该集合也不会立即。根据集合的大小,可能需要一段时间。正常使用显式pub-sub时,您可以等到订阅 ready ,然后再尝试访问它。

使用自动发布,您可以尝试:

Meteor.startup(() => {
  Meteor.setTimeout(() => {
    console.log(dict.find().fetch());
    },
    1000);
  );
});

如果你的收藏很大,你可能不得不使用大于1000的数字。

真正的答案是:

  1. 在服务器上创建发布
  2. 在客户端订阅
  3. 等待订阅为ready()
  4. 做你的事

答案 1 :(得分:0)

订阅需要一点时间才能从服务器接收文档。几秒钟后再试一次。

设置自己的出版物后,一旦订阅收到出版物的完整快照,您就可以使用就绪回调来执行操作。

答案 2 :(得分:0)

我会做什么,而不是导入和导出是以下

在客户端或服务器文件夹中不存在的文件

this.Dictionary = new Mongo.Collection(“Dictionary”)

在Meteor中,您可以声明全局变量