我用这个把头撞在砖墙上。似乎找不到适合我的例子。
这是我的服务器端
Meteor.publish("allUserData", function () {
return Meteor.users.find({}, {fields: {'username': 1, 'profile': 1}});
},
{is_auto: true});
这是我的客户
var allUserData = Meteor.subscribe("allUserData");
Tracker.autorun(function() {
if (allUserData.ready()) {
console.log('ready');
}
});
我准备好了'记录但无法看到如何迭代返回的数据???
答案 0 :(得分:1)
你没有说你希望它如何迭代数据。 “标准”方式是在Blaze中使用帮助程序循环,该帮助程序将游标返回到订阅集合:
HTML:
{{#each user in users}}
{{user.username}}
{{/each}}
JS:
Template.foo.onCreated(function() {
this.subscribe('allUserData');
});
Template.foo.helpers({
users() {
return Meteor.users.find({});
}
});
答案 1 :(得分:0)
对于React,您可以使用createContainer()在组件上设置props。 e.g。
import React, {Component} from 'react';
import {createContainer} from 'meteor/react-meteor-data';
class FooComponent extends Component {
constructor(props) {
super(props);
}
render() {
if (this.props.loading) {
return (
<div>Loading</div>
)
}
return (
{
this.props.users.map(function(user, index) {
return (
<div key={index.toString()}>
{user.username}
</div>
)
}, this)
}
)
}
}
export default createContainer(() => {
let handle = Meteor.subscribe('allUserData');
let users = Meteor.users.find({});
let loading = !handle.ready();
return {
users,
loading
}
}, FooComponent);
我还没有对此进行过测试,如果它不对,我认为它至少有点接近。请原谅我,如果我弄错了,我的React技能仍然相当新鲜。