我在迭代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');
但不幸的是我在浏览器的控制台中收到了这个错误:
这是服务器端:
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;
});
答案 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)});