流星 - 迭代FS.Collection

时间:2016-01-05 07:49:44

标签: node.js meteor

我在迭代FS.Collection对象时遇到了麻烦......

我正在使用GridFS上传和存储文件。我有一个函数(showAllFiles)如下:

vm.showAllFiles = function(){
    console.log("showAllFiles");

    FS.Utility.each(vm.AllFiles, function(fileObj) {
    //also tried: vm.AllFiles.forEach(function(fileObj){
      console.log(fileObj);
    });
}

其中:

var vm = this;
var store = new FS.Store.GridFS("allFiles");
vm.AllFiles = new FS.Collection("allFiles", {stores: [store]});

$reactive(this).attach($scope);
vm.AllFiles = this.subscribe('AllFiles');

但不幸的是我在浏览器的控制台中收到了这个错误:

enter image description here

这是服务器端:

var store = new FS.Store.GridFS("allFiles", {
  mongoUrl: 'mongodb://127.0.0.1:3001/meteor/'
});
var AllFiles = new FS.Collection("allFiles", {
  stores: [store]
});

Meteor.publish('AllFiles', function () {
  var obj=AllFiles.find();
  return obj;
});

1 个答案:

答案 0 :(得分:1)

首先,您将使用订阅覆盖您的收藏名称。这造成了对力量的干扰:

vm.AllFiles = new FS.Collection("allFiles", {stores: [store]});
...
vm.AllFiles = this.subscribe('AllFiles');

让我们将第二个改为:

vm.AllFilesSub = this.subscribe('AllFiles');

要显示集合中的所有文档,我们在集合上.find()创建一个游标,然后迭代它:

vm.AllFiles.find().forEach(function(doc){console.log(doc)});