https://github.com/kristinyim/ClassroomChatreactjsする追加upvotesとFirebaseチャットルーム
私はあなたがGroupMeに持っているものに似たこのチャットルームのメッセージにupvoting機能を追加したいが、私は反応するように新たなんだとチュートリアルのオフにこれを建てだから始める場所が分からない。私はwebdevにはうってつけですが、React.jsとFirebaseの基本を学び始めています。ありがとう!
https://github.com/kristinyim/ClassroomChatreactjsする追加upvotesとFirebaseチャットルーム
私はあなたがGroupMeに持っているものに似たこのチャットルームのメッセージにupvoting機能を追加したいが、私は反応するように新たなんだとチュートリアルのオフにこれを建てだから始める場所が分からない。私はwebdevにはうってつけですが、React.jsとFirebaseの基本を学び始めています。ありがとう!
NB:これを達成する方法はたくさんあるので、以下は単なる提案です。
まず、データをデータベースに保存する方法を考える必要があります。あなたは、ユーザー、メッセージおよびメッセージ・同類を持っている場合は、このようにそれを構造化することができます:
"root": {
"users": {
"$userId": {
...
"messages": {
"$messageId1": true,
"$messageId2": true,
...
}
}
},
"messages": {
"$messageId": {
"author": $userId,
"timestamp": ServerValue.TIMESTAMP
}
},
"likesToMessages": {
"$messageId": {
"$likeId": {
liker: $userId,
"message": $messageId,
"timestamp": ServerValue.TIMESTAMP
}
}
}
}
ユーザーがメッセージの「のような」をクリックするたび、あなたはあなたが次に
var messageId = ?; // The id of the message that was liked
var like = {
liker: currentUserId, // id of logged in user
message: messageId,
timestamp: firebase.database.ServerValue.TIMESTAMP
};
firebase.database.ref().child('likesToMessages').child(messageId).push(like);
に書き込みたいです新しいlike
をデータベースに取得し、提案された構造に一致させてください。
次に、あなたが読んで、メッセージのために同類のカウントを表示したい場合、あなたは次のように行うことができます。
const Message = React.createClass({
propTypes: {
message: React.PropTypes.object,
messageId: React.PropTypes.string // you need to add this prop
}
componentWillMount() {
firebase.database.ref().child('likesToMessages').child(this.props.messageId).on('value', this.onLikesUpdated)
}
onLikesUpdated(dataSnapshot) {
var likes = snap.val();
this.setState({
likes
});
}
render() {
const {name, message} = this.props.message;
const emojifiedString = emoji.emojify(message);
return (
<p>
{name}: {emojifiedString} [{this.state.likes.length}♥]
</p>
);
}
});
また、データベースのセキュリティルールに、あなたはtimestamp
によってインデックスを作成すると思いますメッセージなどのために、最新のメッセージを迅速に照会することができます。
また、GitHubのコードとwooperate.firebaseapp.comのデモで作成した同様のアプリをチェックしてください。
レポのコードから、firebaseデータベースの構造を伝える方法がありません。あなたはあなたの質問にそれを追加できますか? – ArneHugo