Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从meteor中的客户端访问集合_Javascript_Meteor - Fatal编程技术网

Javascript 无法从meteor中的客户端访问集合

Javascript 无法从meteor中的客户端访问集合,javascript,meteor,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(

我有一个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软件包。

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


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

即使使用autopublish,该集合也不会在客户端启动时立即可用。根据收集的大小,可能需要一段时间。当您使用显式发布订阅时,通常可以等到订阅准备就绪后再尝试访问它

使用autopublish,您可以尝试:

Meteor.startup(() => {
  Meteor.setTimeout(() => {
    console.log(dict.find().fetch());
    },
    1000);
  );
});
虽然如果您的收藏量很大,您可能需要使用大于1000的数字

真正的答案是:

  • 在服务器上创建发布
  • 在客户端上订阅它
  • 等待订阅
    ready()
  • 做你的事

  • 我要做的不是导入和导出,而是

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

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

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

    您是否尝试过发布?安装autopublish软件包后是否需要使用发布?您是否在客户端导入了
    imports/api/Dictionary.jsx
    ?顺便问一下,为什么在Mongo集合文件后面加上“jsx”后缀?这是一个标准的JavaScript文件,不是React文件。对不起,当我写了很多前端内容时,这是我的坏习惯。这里的问题是,我安装了autopublish,但不知怎么的,它只在服务器端工作,我也尝试使用mongol,它显示了正确的查询,但我不确定它是使用服务器端还是客户端@GhokanKaradag思考autopublish的功能。没有任何发布/订阅,就没有客户收集数据。谁否决了你,谁就错了。使用订阅
    onReady
    回调或
    autorun
    是正确的答案,即使安装了
    autopublish
    。实际上,指定数据何时到达要比设置超时好得多,我可以让meteor在启动时(不仅仅是特定时间)等待完成订阅收集吗?只有创建命名订阅时,才能使用autopublish。