inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

multer 사용하기

notNull Violation: Post.content cannot be null

284

이규열

작성한 질문수 14

0

router.post('/', isLoggedIn, upload.none(), async(req, res, next) => {
    try {
        const post = await Post.create({
            cotent: req.body.content,
            img: req.body.url,
            UserId: req.user.id,
        });
        res.redirect('/');
    } catch (error) {
        console.error(error);
        next(error);
    }
});

게시글 라우터를 이렇게 작성해서 이미지 업로드랑 게시글 업로드를 했는데

프론트에 notNull Violation: Post.content cannot be null 이라는 에러가 나타나네요 이게 무슨 에러인가요?

mysql nodejs mongodb Sequelize

답변 2

0

이규열

GOMCAM 20220927_0122370749.pngcontent가 비어있다고 나오지만 지금 확인해 보니 사진을 업로드할때 사진의 이름이 이상하게 나오는것을 보니 다른 곳에서 오류가 난것이 content까지 영향을 주는 것 같습니다.

그리고 데이터베이스 쪽에는 값들이 들어가지 않고있습니다.

그런데 원인이 무었인지 모르겠습니다

const express = require('express');
const multer = require('multer');
const path = require('path');
const fs = require('fs');

const { Post, Hashtag } = require('../models');
const { isLoggedIn } = require('./middlewares');
const { nextTick } = require('process');

const router = express.Router();

try {
    fs.readdirSync('uploads');
} catch (error) {
    console.error('uploads 폴더가 없어 uploads 폴더를 생성합니다.');
    fs.mkdirSync('uploads');
}

const upload = multer({
    storage: multer.diskStorage({
        destination(req, file, cb) {
            cb(null, 'uploads/');
        },
        filename(req, file, cb) {
            const ext = path.extname(file.originalname);
            cb(null, path.basename(file.originalname, ext) + Date.now() + ext);
        },
    }),
    limits: { fileSize: 5 * 1024 * 1024 },
});
//요청은 img로 하지만 실제 파일은 upload에 있다
//이를 해결해주는 것이 app.js에 express.static
//image 라우터
router.post('/img', isLoggedIn, upload.single('img'), (req, res) => {
    console.log(req.file);
    res.json({ url: `/img/${req.file.filename}` });
});

//게시글 router
router.post('/', isLoggedIn, upload.none(), async(req, res, next) => {
    try {
        const post = await Post.create({
            cotent: req.body.content,
            img: req.body.url,
            UserId: req.user.id,
        });
        res.redirect('/');
    } catch (error) {
        console.error(error);
        next(error);
    }
});
module.exports = router;

post.js의 전체 코드입니다

0

제로초(조현영)

cotent 오타입니다. ㅎㅎ 이미지는 일단 영어 이름인 이미지로 업로드해보세요

0

제로초(조현영)

말 그대로 post.content 가 null인 겁니다. 게시글이 제대로 multer를 통해 업로드된 것이 맞나요? 디비 들어가보시면 content가 null일 것 같습니다.

리눅스 노드 설치시 패키지

0

165

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

909

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2287

2

a[title] 질문드립니다

0

380

1

리뉴얼 강의 및 공부 방법

0

583

1

jwt decode

0

1135

1

node.js 교과서 3판 질문드립니다

0

393

1

passport와 jwt

0

437

1

리뉴얼 강의

0

422

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

356

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

485

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

507

2

nunjucks res.render('error'); 작동을 안합니다.

0

515

1

질문있습니다.

0

348

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3538

1

수업자료는 어디있나요?

0

369

1

질문 있습니디

0

240

1

multer 사용시 file 외 name값은 못받나용?

0

421

1

코드 중복 부분 질문드립니다.

0

300

1

api 만드는 이유 질문드립니다.

0

290

1

Strategy의 done에 대해 질문드립니다.

0

368

1

안녕하세요 fs 권한 관련 질문드립니다

0

453

1

시퀄라이즈 연결질문...

0

503

2

res.setHeader vs res.cookie

0

1791

3