answer.controller.ts 1.39 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { asyncWrap } from "../helpers";
import { TypedRequest } from "../types";
import formidable from "formidable";
import { FileInfo } from "../models";
import { fileDb, userDb } from "../db";
import fs from "fs/promises";

export const createAnswers = asyncWrap(async (reqExp, res) => {
  const req = reqExp as TypedRequest;
  const answer = req.body;
  const answers = JSON.parse(answer.answers);
  answer.answers = answers;
  console.log(answers);
  const file = req.files.img as formidable.File;
  let img;
  try {
    // 1) 파일을 DB에 저장
    if (file) {
      //   img = new FileInfo({
      //     name: file.originalFilename,
      //     url: file.newFilename,
      //     isNew: true,
      //   });
      //   await fileDb.createFile(file);
      // 2) answer에 img 항목 추가
      answer.img = img;
    }
    // 3) Answer 만들기(map을 돌려서 하나씩 추가시켜야 함)
    console.log(answer);
    //   const newAnswer = await answerDb.createAnswer(answer);
    // 주의: ref는 반드시 save를 해야 디비에 생성이 됩니다.
    return res.json();
  } catch (error: any) {
    console.log("error in create user:", error);
    // 오류 발생시 저장된 파일 제거
    if (file) {
      //   img && (await fileDb.deleteFileById(img._id.toString()));
      await fs.unlink(file.filepath);
    }
    res.status(422).send(error.message || "사용자 생성 오류");
  }
});