Meteor - Tracker.autorun 更新时不刷新数据。

Meteor - Tracker.autorun not refreshing data on update.

我有一些为短信应用编写的基本代码:

import React from "react";
import ReactDOM from "react-dom";
import {Meteor} from "meteor/meteor";
import {Tracker} from "meteor/tracker"

import {Texts} from "./../imports/api/Text";
import App from "./../imports/ui/App"

Meteor.startup(() => {
    Tracker.autorun(() => {
        let texts = Texts.find().fetch();
        console.log(texts)
        ReactDOM.render(<App />, document.getElementById("app"));
    });
});

但问题是当我进入控制台时,我得到一个空数组。

Text.js:

import {Mongo} from "meteor/mongo";

export const Texts = new Mongo.Collection("texts");

我的 main.js 文件或 Text.js 文件中是否遗漏了什么?我不确定现在该怎么做,因为我已经从我的其他项目中复制并粘贴了它,它似乎在这里不起作用,但它在我的旧项目中起作用。我没有解决方案!请帮忙!!

除非你还安装了包autopublish,否则你需要从服务器发布数据,然后在客户端订阅。

要发布,您需要在服务器上的某处:

import { Texts } from "/imports/api/Text";
Meteor.publish('texts', function () {
    return Texts.find();
});

然后在使用 collection 之前,您需要在客户端订阅:

Meteor.startup(() => {
    Meteor.subscribe('texts'); // <--- 
    Tracker.autorun(() => {
        let texts = Texts.find().fetch();
        console.log(texts)
        ReactDOM.render(<App />, document.getElementById("app"));
    });
});

本文解释了原因: https://medium.com/meteor-js/data-flow-from-the-database-to-the-ui-three-layers-of-meteor-d5e208b466c3