在回调中调用时,Meteor集合findOne返回undefined

时间:2015-10-17 14:41:54

标签: javascript mongodb meteor

我正在尝试在Meteor Collection中找到()。fetch(),但是当我在回调中调用此代码时(或直接在控制台中,它返回[])。

MyClass = class MyClass {
    constructor() {
        this.worker = null;
        this._init();

        console.log(Site.MyCollection.find().fetch()); //Logs the array of documents
    }

    _init() {
        this.worker = new Worker('my-web-worker.js');
        this.worker.addEventListener('message', this._onMessage, false);

        this.worker.postMessage({ cmd: 'start', data: Site.MyCollection.find().fetch() }); //Works fine, the Web Worker receives the array of documents as expected

    }


    _onMessage(e) {
        console.log(Site.MyCollection.find().fetch()); //Logs []
    }
}

我无法从集合中删除任何文档,因此我不确定这是否是一个安全功能,或者是否在创建后以某种方式删除了集合。

要创建(虚拟)集合,我这样做(在客户端和服务器上)

Site.MyCollection = new Mongo.Collection("my-collection");

Site.MyCollection.remove();

let docs = [
  {name:"One", data : ["a", "b", "c"}},
  {name:"Two", data : ["e", "f", "g"}},
  {name:"Three", data : ["h", "i", "j"}},
  {name:"Four", data : ["k", "l", "m"}}   
];

_.each(docs, function(doc){
  Site.MyCollection.insert(doc);
});

1 个答案:

答案 0 :(得分:0)

Aaah证明我是个白痴,我已经删除了自动发布包。所以

$meteor add autopublish

然后重新启动应用程序修复它。