• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

11강 async로 바꿔봤는데 맞나요 ??

20.09.30 16:57 작성 조회수 183

0

제가 예전에 강의를 ckeditor부분까지 듣다가 공부할게 좀 있어서

지금 다시 보는데요...

router.post('/'async (reqres=> {
  try {
    console.log(req.body);
    const { nameemailpassword } = req.body;

    if (!name || !email || !password) {
      return res.status(400).send('입력하지 않은 칸을 채워주세요.');
    }

   1.
// Check for exising user
    const exUser = await User.findOne({ email });
    if (exUser) {
      return res.status(400).send('이미 가입된 유저가 존재합니다.');
    }

    const newUser = await new User({
      name,
      email,
      password,
    });

    const hashedPassword = await bcrypt.hash(password10);

    newUser.password = hashedPassword;

    await newUser.save();

    jwt.sign(
      { id: newUser.id },
      JWT_SECRET,
      { expiresIn: 3600 }, //
      (errtoken=> {
        if (errthrow err;
        res.status(200).json({
          token,
          user: {
            id: newUser.id,
            name: newUser.name,
            email: newUser.email,
          },
        });
      },
    );
  } catch (error) {
    console.error(error);
  }

}); 

이렇게 했는데요.

코드에 틀린 부분이 있을까요?

2. 이코드는 그냥 sequelize에서는 이런식으로 했었는데
mongoDB는 이런식으로 안되나용??
const newUser = await User.create({
       name,
      email,
     password:hashedPassword,
  });

sequelize로 mysql할때랑은 좀 다른거 같아서 헷갈려용

아 참고로 bcryptjs말고 그냥 bcrypt로 했어요.

그리고 첫번째 복사한 코드는 postman이랑 mongodb에는 데이터가 저장이 잘되긴했는데

두번째 복사한 코드는 실험을 안해봐서 혹시 되는지 해서 여쭤봤습니다.

3.jwt.sign(

      { id: newUser.id },
      JWT_SECRET,
      { expiresIn: 3600 }, //
      (errtoken=> {.....
토큰을 이렇게 주셨자나요
근데 글을 쓰다가 3600초가 지나면
토큰이 만료되서 글이 안써지지않나요????
이런 경우 어떻게 처리하나요?
저 만료시간을 늘리나요??

4.마지막으로요.

제가 next로 만들건데요.

ckeditor부분하고

배포부분이 많이 다른가요??

답변 2

·

답변을 작성해보세요.

1

1. 일단 보이는 것으로는 큰 문제가 없을 것으로 보입니다. 

2. 해당 코드는 비밀번호값을 받아서 미리 해쉬값으로 처리해주고 난 다음, 그 결과를 가지고 마지막으로 User.create를 한다는 것 같은데, 작동할 것 같네요. 한 번 시도해보시고 결과를 알려주시면 감사하겠습니다. 

3. 보안을 위해서 만료기간을 그렇게 설정했기에 토큰값이 기간 지나면 당연히 글이 안올라갑니다. 글이 올라간다면 더 이상한 것이죠. 이와 관련해서 CKEditor는 autosave 플러그인이 있습니다. 참고하시기 바랍니다. https://ckeditor.com/docs/ckeditor5/latest/api/module_autosave_autosave-Autosave.html

4. NextJS로 만드시더라도 CKEditor 부분은 크게 다를게 없습니다. 배포도 다를건 없습니다. 다만 SSR을 한다는 것은 유저가 부담해야할 비용을 서버가 부담하는 것이기에, 기본적으로 서버(백엔드, 프론트)는 2대 돌려야 합니다. 

0

송지훈님의 프로필

송지훈

질문자

2020.10.02

정말 감사합니당.

오늘은 할게 있어서 내일 해보고 결과 댓글로 올릴게요.

Good night 입니다.~