axios를 사용하여 여러 요청을 보내는 방법은 무엇입니까?
P粉316110779
P粉316110779 2024-03-26 21:18:41
0
1
354

일부 필드(idStudent(기본 키 및 자동 증가), 이름, 성, ..., 교사, 전제 조건)가 포함된 반응 레지스트리를 만들고 있으며 유효성 검사를 위해 Formik & yes를 사용하고 있습니다.

나중에는 특정 과목에서 획득한 전제 조건과 성적을 기반으로 지원서를 추천 시스템(학생들에게 최종 학년 프로젝트 추천)과 연결해야 했습니다.

처음에는 프런트엔드 양식의 데이터를 저장하기 위해 하나의 테이블만 사용했습니다.

학생(이름, 성, ..., 전제 조건)

학생들은 강사의 지시에 따라 전제 조건이 포함된 응답 선택에서 전제 조건을 선택할 수 있습니다(예: 학생이 컴퓨터 과학을 공부하는 경우 응답 선택에는 React, Angular, Machine Learning...과 같은 컴퓨터 과학 전제 조건만 표시됩니다). 학생이 여러 전제 조건을 가질 수 있다는 점을 고려하면 학생 테이블의 전제 조건 열에는 선택한 전제 조건에 대한 여러 ID가 포함됩니다. 전제 조건은 내 데이터베이스의 다른 테이블에 저장됩니다 (prerequisites(idFaculty, idPreconditions, prerequisites)) JSON 파일을 사용하여 열에 여러 ID를 저장할 수 있다는 것을 알고 있지만 이전 게시물에서 Stackoverflow에 대해 조사한 후 특히 열을 업데이트하려는 경우 JSON을 처리하는 것이 어렵다는 것을 알았습니다. 그래서 등록하는 동안 학생들이 선택한 선수과목을 저장하기 위해 또 다른 테이블을 만들었습니다

(studentPrecessions(idStd(학생 테이블의 idStudent를 참조하는 외래 키), idPrecession(전제 조건 테이블의 idPrecessions를 참조하는 외래 키))

내가 직면한 문제는 axios를 통해 두 개의 게시물에 대한 요청을 보내는 방법입니다. 학생들이 여러 전제 조건을 선택할 경우를 대비해 루프를 사용하여 여러 행을 저장해야 한다고 생각했습니다.

제가 한 일은 다음과 같습니다:

내 백엔드 파일

으아아아

내 프런트엔드 코드

app.post("/registerStudent", (req, res) => {
  const faculty = req.body.faculty;
  const firstName = req.body.firstName;
  const lastName = req.body.lastName;
  const phone = req.body.phone;
  const email = req.body.email;
  const password = req.body.password;
  db.query(
    "INSERT INTO students (email, password, firstName, lastName, faculty, phone) VALUES (?,?,?,?,?,?)",
    [email, password, firstName, lastName, filiere, phone],
    (err, result) => {
      if (err) {
        console.log(err);
      } else {
        // store chosen prerequisites
        //result.insertId is the current idStudent of the student who registering
        const idStd = result.insertId;
        const idPrerequisite = req.body.idprerequis;
        db.query(
          "INSERT INTO studentPrerequisites (idStd, idPrerequisite) VALUES (?,?)",
          [idFiliere, idPrerequisite],
          (err, result) => {
            if (err) {
              console.log(err);
            } else {
              res.send("Values Inserted");
            }
          }
        );
      }
    }
  );
});

P粉316110779
P粉316110779

모든 응답(1)
P粉976737101

요청에 일련의 필수 구성 요소를 전달하여 백엔드가 여러 필수 구성 요소를 처리하도록 하는 것이 더 좋습니다. 나는 또한 많은 .then 연결을 피하고 트랜잭션을 활용하기 위해 Knex와 async/await를 사용할 것입니다. 트랜잭션에 오류가 발생하면 트랜잭션은 모든 쿼리를 재개합니다. 또한 Knex를 사용하면 원시 SQL을 작성하지 않고도 내장된 메소드를 사용하여 데이터베이스를 매우 쉽게 쿼리할 수 있습니다. 또한 firstName = req.body.firstName, lastName = req.body.lastName 등을 수행하는 대신 객체 구조 분해를 사용해야 합니다. 여기에서 knex 및 데이터베이스 연결에 대해 자세히 알아볼 수 있습니다: https://knexjs.org/guide/#node-js 또한 비밀번호를 해시하는 것은 어떻습니까? 이것은 적어도 당신이 해야 할 가장 기본적인 보안입니다!

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿