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

Cannot access collection from client side in 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());

});

但是控制台没有任何显示。我已经尝试在服务器和端导入和获取,一切正常。我还安装了自动发布包。

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

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

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

使用自动发布你可以试试:

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

尽管如果您的 collection 很大,您可能不得不使用比 1000 更大的数字。

真正的答案是:

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

我会做的,而不是导入和导出如下

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

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

在 Meteor 中你可以声明全局变量