登録されたすべてのユーザーをクライアント側に表示するのに問題があります。 std:accounts-ui
パッケージは.meteor/packages
に含まれています。 autopublish
パッケージが削除されました。クライアントはreact-meteor-data
によって提供さcreateContainer
内からallUsers
パブリケーションにサブスクライブしている間、すべてのユーザーのMeteor Reactクライアントのすべてのユーザーを表示
データは、allUsers
としてUsers.js
で公開されています。
しかしページは、現在ログインしているユーザーの詳細をレンダリングします。ブラウザーJSコンソールでMeteor.users().find().fetch()
を実行すると、唯一の現在ログインしているユーザーを示し、かつユーザーがログインしていない場合は何も表示されません。
サーバー側のconsole.log(Meteor.users.find().fetch()
を実行すると、すべてのユーザーが正しく出力されます。
なぜブラウザでこの現象が発生していますか?
/imports/api/Users.js
import { Meteor } from 'meteor/meteor';
if (Meteor.isServer) {
Meteor.publish('allUsers', function() {
return Meteor.users.find({});
})
}
/imports/ui/App.jsx
import React, { Component, PropTypes } from 'react';
import { createContainer } from 'meteor/react-meteor-data';
import { Accounts } from 'meteor/std:accounts-ui';
import { Table } from 'react-bootstrap';
import User from './User';
export class App extends Component {
renderUsers() {
return this.props.users.map((user) => (
<User key={user._id} user={user} />
));
}
render() {
return (
<div>
<h1>Users</h1>
<Table>
<tbody>
<tr>
<td>ID</td>
<td>Email</td>
<td>createdAt</td>
</tr>
{ this.renderUsers() }
</tbody>
</Table>
</div>
)
}
}
App.propTypes = {
users: PropTypes.array.isRequired
}
export default createContainer(() => {
Meteor.subscribe('allUsers');
return {
users: Meteor.users.find().fetch()
}
}, App);
/imports/ui/User.jsx
import React, { Component } from 'react';
export default class Users extends Component {
render() {
return (
<tr>
<td>{ this.props.user._id}</td>
<td>{ _.get(this.props, 'user.emails[0].address', 'UNKNOWN') }</td>
<td>{ this.props.user.createdAt }</td>
</tr>
)
}
}
Upvoteは複数の "are"データを使用します。 –
@JonathanWheeler omgありがとうございました! :) – Nyxynyx
Meteor.user()私は知っている組み込み関数です。すべてのユーザーに加入していない場合は、ここで説明している機能に引き続きアクセスできますか? –