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"));
});
});
我有一些为短信应用编写的基本代码:
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"));
});
});