我有一些我为短信应用编写的基本代码:
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文件中遗漏了什么?我不知道现在该做什么,因为我已经从我的其他项目中复制并粘贴了它,它似乎在这里不起作用,但它在我的旧项目中有效。我没有解决方案!!请帮忙!!
答案 0 :(得分:0)
除非您仍然安装了软件包autopublish
,否则您需要从服务器发布数据并在客户端上订阅它。
要在服务器上的某个位置发布所需内容:
import { Texts } from "/imports/api/Text";
Meteor.publish('texts', function () {
return Texts.find();
});
然后在使用该集合之前,您需要在客户端订阅:
Meteor.startup(() => {
Meteor.subscribe('texts'); // <---
Tracker.autorun(() => {
let texts = Texts.find().fetch();
console.log(texts)
ReactDOM.render(<App />, document.getElementById("app"));
});
});