router.get('/', (req,res,next)=> {

try {

const user = await User.findOne({

...

});

res.render('login', {

user

})

} catch (error) {

console.error(error);

next(error);

}

})

 

이와 같은 데이터베이스에 접속하는 코드를 실행하였는데, 에러가 발생했다.

너무나 많이 발생하는 에러라 이젠 외워지기 시작했다.

이참에 블로그에 정리해두려고 글을 작성한다.

 

이것은 await를 사용하기 위해서는 async를 반드시 함수 앞에 붙여줘야 한다. 바늘과 실처럼...

 

router.get('/', async (req,res,next)=> {

try {

const user = await User.findOne({

...

});

res.render('login', {

user

})

} catch (error) {

console.error(error);

next(error);

}

})

Posted by sungho88
,

<배열>

기본 변수 할당

var foo = ["one", "two", "three"];

var [one, two, three] = foo;

console.log(one); // "one"

console.log(two); // "two"

console.log(three); // "three"

 

선언에서 분리한 할당

var a, b; [a, b] = [1, 2];

console.log(a); // 1

console.log(b); // 2

 

기본값 추가하기

var a, b;

[a=5, b=7] = [1];

console.log(a); // 1

console.log(b); // 7

 

변수 값 교환하기

var a = 1; var b = 3; [a, b] = [b, a]; console.log(a); // 3 console.log(b); // 1

 

함수가 반환한 배열 분석

function f() { return [1, 2]; } var a, b; [a, b] = f(); console.log(a); // 1 console.log(b); // 2

 

일부 반환 값 무시하기

function f() {

    return [1, 2, 3];

}

 

var [a, , b] = f();

console.log(a); // 1

console.log(b); // 3

 

변수에 배열의 나머지를 할당하기

—> 배열을 구조 분해할 경우, 나머지 구문을 이용해 분해하고 남은 부분을 하나의 변수에 할당.

var [a, ...b] = [1, 2, 3]; console.log(a); // 1 console.log(b); // [2, 3]

Posted by sungho88
,

예전에 사용하던 말이 많았던 var... 요즘에는 const와 let으로 대체되었다.

하지만, 완전 대체되진 않았다. 스코프(유효 범위) 때문이다.

 

const와 let은 블록 스코프를 지니고 있다.

var는 함수 스코프를 지니고 있으므로 일반적인 if문의 블록이나 for문의 블록과 상관없이 동작한다.

 

const는 쉽게말해서 한 번만 할당한다( = )고 생각하면 된다. 한 번 값을 할당하면 그 이후로 값을 재할당할 수 없다.

또한, 초기화할 때 값을 할당해야 에러가 나지 않는다. 

즉,

const a;

a = 20;

 

이렇게 작성하는 것은 불가능하다. 무조건 첫 선언과 동시에 할당해야한다.

 

let은 값이 언제든지 변할 수 있는 변수를 선언할때 사용한다. const에 비해 var와 유사하다.

const b;

b = 20;

 

둘 중 언제 어떤 것을 쓰면 될까?

 

변수는 초기화했던 값이 다른 값을 다시 할당하는 경우는 적을뿐만 아니라 실수로 변수의 값을 변경할 가능성도 존재한다.

따라서, 기본적으로 const를 사용하고 다른 값을 할당해야한다는 확신이 있을 때 let를 사용하면 된다.

 

 

Posted by sungho88
,

app.js에서 라우터를 사용하는데, 이러한 에러가 발생했다.

 

 

const pageRouter = require("./routes/page");  

 

app.use("/", pageRouter);

 

이렇게 단순한 두 줄에서 에러가 났다. 

 

처음에는 오타인 줄 알고 유심히 봤지만 너무 단순한 문장이라 에러날 곳이 없었다.

 

검색했다. 문제는 page.js 파일 안에 있었다.

 

바로~ router를 모듈로 export해주지 않아서 난 에러였다. 이런이런~

 

module.exports를 통해서 router를 등록해줘야 다른 모듈에서 사용이 가능하기 때문에 꼭 붙여줘야한다.

 

참고로 꼭 맨 밑에 작성하지는 않아도 된다. 하지만 꼭 있어야한다.

 

이번 에러로 하나 배웠다. 실수하지 말고 module.exports는 잊지말자!! 

 

 

 

Posted by sungho88
,