Метеоритная вспышка не показывает подписанные данные - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь отобразить данные из коллекции, используя Blaze. У меня есть такая коллекция:

TestsCollection.js * * 1004

import { Mongo } from 'meteor/mongo';
import { Factory } from 'meteor/dburles:factory';
import SimpleSchema from 'simpl-schema';


class TestsCollection extends Mongo.Collection {
    constructor(collectionName){
        super(collectionName);
        console.log('created');
    }
    insert(doc, callback) {
        const ourDoc = doc;
        ourDoc.testField = new Buffer([0,1,2]);
        const result = super.insert(ourDoc, callback);
        return result;
    }
}

export const Tests = new TestsCollection ('tests');

Tests.schema = new SimpleSchema({

    name: {
        type: String,
        max: 512,
        required: true,
    },
    text: {
        type: String,
        max: 512,
        required: true
    },
    testField: {
        type: Buffer,
        max: 512,
        required: true
    }

});

Tests.attachSchema(Tests.schema);

publication.js

import { Meteor } from 'meteor/meteor';

import { Tests } from '../tests';

Meteor.publish('tests', function () {
    return Tests.find({});
});

и я импортировал оба файла в server / main.js:

import '/imports/api/tests'
import '/imports/api/server/publications'

Хорошо, теперь я хочу отобразить эту коллекцию в своем шаблоне клиента. Я уже добавил тестовые данные, поэтому я делаю:

test_Tmp.html

<template name='test_Tmp'>
<h3>This is test page #1</h3>
<table>
  <tr>
     <th>name</th>
     <th>info</th>
  </tr>
  {{#each getTests}}
  <tr>
      <td>{{name}}</td>
      <td>{{text}}</td>
  </tr>
  {{/each}}
</table>
</template>

test_Tmp.js

import './test_Tmp.html'
import { Mongo } from "meteor/mongo";


const Tests = new Mongo.Collection('tests');

Template.test_Tmp.onCreated(function() {
    this.autorun(() => {
        this.subscribe('tests');
    });
});

Template.test_Tmp.onRendered(function onRendered() {
   //do some stuff


});

Template.test_Tmp.helpers({
    getTests(){
        var data = Tests.find({});
        data = data.fetch();
        console.log(data);
        return data;

    }
});

Когда я загружаю тестовую страницу, которая отображает шаблон test_Tmp (я использую потоковый маршрутизатор). я получаю только это:

Это тестовая страница № 1 название

А стол пуст. Помощник в моем клиентском шаблоне:

data = data.fetch();
console.log(data);`

по какой-то причине возвращает пустой массив. Если я удаляю fetch и выполняю console.log(data);, я могу видеть полную информацию о коллекции с картой _docs всех тестовых данных, которые я вставил. Но если я удаляю fetch, все равно возвращаемые данные не отображаются, таблица пуста. Как я могу получить данные из коллекции на клиенте, тогда нужно, чтобы коллекция реагировала, любое изменение сервера должно вызывать изменение коллекции на стороне клиента

...