我正在使用Meteor / React,我正在尝试显示系统中的所有用户:
我有:/imports/api/users.js
import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
if (Meteor.isServer) {
// This code only runs on the server
// Only publish tasks that are public or belong to the current user
Meteor.publish('allUsers', function () {
return Meteor.users.find({}, {fields: {"emails.address": 1}});
});
}
和/imports/ui/App.jsx
import React, { Component, PropTypes } from 'react';
import ReactDOM from 'react-dom';
import { Meteor } from 'meteor/meteor';
import { createContainer } from 'meteor/react-meteor-data';
class App extends Component {
constructor() {
super();
this.state = {
subscription: {
users: Meteor.subscribe('allUsers')
}
}
}
componentWillUnmount() {
this.state.subscription.users.stop();
}
render() {
let users = this.props.users;
console.log(users);
return (<div>
<h1>GoArc User Manager</h1>
<div>
{users.map((user)=>{
if ('emails' in user ) {
email = user.emails[0].address;
} else {
email = '?'
}
return <div key={user._id}>{user._id} - {email}</div>
})
}
</div>
</div>)
}
}
export default createContainer(() => {
return {
users: Meteor.users.find({ }).fetch(),
};
}, App);
但它仍然只显示当前的登录用户。
如果我设置了autopublish / insecure,那么代码工作正常。
使用Meteor / React将所有用户发布到客户端的正确方法是什么?
另一个相关问题是即使我设置了autopublish / insecure仍然只有当前用户才会出现email.address字段 - 即使我发布了这个字段:
return Meteor.users.find({}, {fields: {"emails.address": 1}});
答案 0 :(得分:0)
代码是正确的,但我忘了添加import '../imports/api/users.js';
在/server/main.js