オンラインで質問に答える際のリアルタイムの対話をサポートするシステムを設計する方法
インターネットの発展に伴い、オンライン学習は一般的な学習方法になりました。オンライン質問応答プラットフォームの出現により、学習はより柔軟かつ便利になりました。しかし、現在のオンライン質問回答プラットフォームの多くは、単純な質問回答機能のみを提供しており、リアルタイムの対話を実現していません。より豊かで多様な学習体験を求める学生のニーズを満たすには、リアルタイムの対話をサポートするオンライン質問応答システムを設計する必要があります。
この目標を達成するには、WebSocket を使用してリアルタイムのデータ送信を実現し、フロントエンドとバックエンドの分離アーキテクチャを採用します。フロントエンドは React.js を使用してユーザー インターフェイスを構築します。インターフェイス、バックエンドは Node.js を使用してサーバーを構築し、データベースとして MongoDB を使用します。
まず、質問と回答の記録を保存するデータベース構造を設計する必要があります。質問情報を保存するコレクションと回答レコードを保存するコレクションの 2 つを作成できます。質問コレクションには次のフィールドを含めることができます:
{ _id: ObjectId, question: String, options: [String], answer: String }
回答レコード コレクションには次のフィールドを含めることができます:
{ _id: ObjectId, userId: String, questionId: ObjectId, answer: String, correct: Boolean }
次に、追加、削除、質問および回答記録の変更および照会機能。たとえば、次の API インターフェイスを作成できます:
import React, { useState, useEffect } from 'react'; const Quiz = () => { const [questions, setQuestions] = useState([]); const [answered, setAnswered] = useState(false); const [answer, setAnswer] = useState(''); useEffect(() => { fetch('/api/questions') .then(response => response.json()) .then(data => setQuestions(data)); }, []); const handleSubmit = () => { fetch('/api/records', { method: 'POST', body: JSON.stringify({ answer }), headers: { 'Content-Type': 'application/json' } }) .then(response => response.json()) .then(data => { setAnswered(true); // 更新其他用户的答题情况 }); }; return ( <div> <h1>在线答题</h1> {questions.map(question => ( <div key={question._id}> <h3>{question.question}</h3> {question.options.map(option => ( <div key={option}> <input type="radio" id={option} name="answer" value={option} onChange={e => setAnswer(e.target.value)} disabled={answered} /> <label htmlFor={option}>{option}</label> </div> ))} </div> ))} {!answered && ( <button onClick={handleSubmit}>提交答案</button> )} </div> ); }; export default Quiz;
以上がオンライン質問応答におけるリアルタイムの対話をサポートするシステムを設計する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。