【问题标题】:Meteor.js - Won't display subscription data, only the cursor objectMeteor.js - 不会显示订阅数据,只显示光标对象
【发布时间】:2016-08-10 23:57:55
【问题描述】:

为什么它没有在我的模板中显示文件记录?它返回给模板的唯一东西就是“光标”对象。

JS 控制台中的 console.log(file) 输出是什么:

 FilesCollection {collectionName: "Files", downloadRoute: "/cdn/storage", schema: Object, chunkSize: 524288, namingFunction: false…}

我查看了每篇文章等。我意识到它会向客户端返回一个光标,但我正在执行 Files.findOne() 查询,它应该将记录本身返回到模板/html。

'/imports/api/files.js'

import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';

export const Files = new FilesCollection({
   collectionName: 'Files',
   allowClientCode: false, // Disallow remove files from Client
   onBeforeUpload: function (file) {
   // Allow upload files under 10MB, and only in png/jpg/jpeg formats
   if (file.size <= 10485760 && /png|jpg|jpeg/i.test(file.extension)) {
     return true;
   } else {
     return 'Please upload image, with size equal or less than 10MB';
   }
  }
});


if (Meteor.isServer) {
  // This code only runs on the server
  Meteor.publish('getFile', function(id) {
  return Files.find({_id: id }).cursor;
});
}

'/imports/ui/components/download.js'

import './download.html';

import { Files } from '../../api/files.js';


Template.download.onCreated(function() {
    let self = this;
    self.autorun(function() {
      let fileId = FlowRouter.getParam('id');
      self.subscribe('getFile', fileId);
    });
});

Template.download.helpers({
  file: function () {
    let fileId = FlowRouter.getParam('id');
    let file = Files.findOne({_id: fileId}) || {};
    console.log(file)
    return file;
  }
});

'/imports/ui/components/download.html'

<template name='download'>
    {{#if Template.subscriptionsReady}}
        {{#with file}}
            <a href="{{link}}?download=true" download="{{name}}"     target="_parent">
              {{name}}
            </a>
            <p>{{link}}</p>
            <h1>subscriptions are ready!</h1>
            <h2>{{collectionName}}</h2>
        {{/with}}
    {{else}}
      <p>Loading...</p>
    {{/if}}
</template>

【问题讨论】:

    标签: javascript mongodb meteor publish-subscribe


    【解决方案1】:

    世界上最愚蠢的错误,记住:Meteor 中的模板名称必须大写!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 2018-02-15
      • 2022-10-13
      • 2017-12-31
      • 1970-01-01
      相关资源
      最近更新 更多