我正在尝试使用CollectionFS的最简单示例。所以我开始了一个新项目

meteor create test
cd test
meteor add cfs:standard-packages
meteor add cfs:filesystem


现在,我添加README.md中的所有代码。

common.js中(创建)

Images = new FS.Collection("images", {
  stores: [new FS.Store.FileSystem("images", {path: "~/uploads"})]
});


所以在server.js中(创建)

Images.allow({
  'insert': function () {
    // add custom authentication code here
    return true;
  },
});


test.js中(由流星创建的一个编辑)

  Template.hello.helpers({
    counter: function () {
      return Session.get('counter');
    },
    // -- added ---
    images: function() {
      return Images.find();
    },
  });

  // added
  Template.hello.events({
    'change .myFileInput': function(event, template) {
      var files = event.target.files;
      for (var i = 0, ln = files.length; i < ln; i++) {
        Images.insert(files[i], function (err, fileObj) {
          // Inserted new doc with ID fileObj._id, and kicked off the data upload using HTTP
        });
      }
    }
  });


test.html中(由流星创建的一个编辑)

  <!-- added -->
  <input type="file" class="myFileInput"/>

  <hr/>
    {{#each images}}
      <div>
        {{this.name}}: <a href="{{this.url}}" target="_blank"><img width="50" src="{{this.url}}" alt="" class="thumbnail" /></a>
      </div>
    {{/each}}


这样一切正常。我设置了一个图片,它就上传了,神奇地出现了

然后我删除autopublish

meteor remove autopublish


我需要发布和订阅什么才能使其重新工作?

我尝试过的事情

server.js

if (Meteor.isServer) {
  Meteor.publish("images");
}


test.js

if (Meteor.isClient) {
  Meteor.subscribe("images");
}


没运气

最佳答案

if (Meteor.isServer) {
  Meteor.publish("images", function() {
    return Images.find();
  });
}


您获得的客户端代码是正确的。

关于javascript - 将CollectionFS与 meteor 一起使用时要发布的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33227346/

10-09 23:24