いくつかのフィールド (idStudent (主キーと自動インクリメント)、名、姓、...、教師、前提条件) を含む反応レジストリを作成しており、検証に Formik & yes を使用しています。
その後、前提条件と特定の科目で取得した成績に基づいて、申請書を推薦システム (学生に最終学年のプロジェクトを推薦する) にリンクさせる必要がありました。
最初は、フロントエンド フォームからのデータを保存するために 1 つのテーブルのみを使用しました。
学生 (名、姓、...、前提条件)
学生は、講師に従って、前提条件を含む回答選択肢から前提条件を選択できます (例: 学生がコンピュータ サイエンスを勉強している場合、回答選択肢には、リアクション、角度、機械学習などのコンピュータ サイエンスの前提条件のみが表示されます)。 学生が複数の前提条件を持つことができることを考慮すると、学生テーブルの前提条件列には、選択した前提条件の複数の ID が含まれます。 前提条件はデータベースの別のテーブルに保存されています (prerequisites(idFaculty, idPreconditions, prerequisites)) JSON ファイルを使用して列に複数の ID を保存できることはわかっていますが、以前の投稿で Stackoverflow について調べたところ、特に列を更新する場合、JSON の処理が難しいことがわかりました。 そこで、登録時に学生が選択した前提条件
を保存する別のテーブルを作成しました。 (studentPrecessions(idStd(students テーブルから idStudent を参照する外部キー), idPrecession(前提条件テーブルから idPrecisions を参照する外部キー))
私が直面している問題は、axios を介して 2 つの投稿のリクエストを送信する方法です。 学生が複数の前提条件を選択した場合に備えて、ループを使用して複数の行を保存する必要があるかもしれないと考えました。
これが私がやったことです:
私のバックエンドファイル
リーリー私のフロントエンドコード
ああああ
前提条件の配列をリクエストに渡して、バックエンドに複数の前提条件を処理させることが最善です。また、多くの .then チェーンを回避し、トランザクションを活用するために、Knex と async/await も使用します。トランザクションでエラーが発生した場合、トランザクションはすべてのクエリを再開します。また、Knex を使用すると、生の SQL を記述することなく、組み込みメソッドを使用してデータベースにクエリを実行することが非常に簡単になります。また、firstName = req.body.firstName、lastName = req.body.lastName などを実行する代わりに、オブジェクトの構造化を使用する必要があります。 knex とそれに接続するデータベースの詳細については、こちらでご覧いただけます: https://knexjs.org/guide/#node-js また、パスワードをハッシュ化してみませんか?これは少なくとも実行すべき最も基本的なセキュリティです。