私は/反応し、私は、システム内のすべてのユーザーを表示しようとしている流星を使用しています:/輸入/ 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を設定した場合にも/まだemail.addressフィールド上の安全でないが、現在のユーザーに対してのみ表示されていることである - 私はこのフィールドを公開していても:
return Meteor.users.find({}, {fields: {"emails.address": 1}});
あなたの州にユーザを持ち、小道具からそれを取得しようとしています。 –
私はこれを行う方法であることを説明しているhttps://www.youtube.com/watch?v=ootKAwnQiP4をフォローしていました。それが間違っている場合は、修正を提案してください –