더북(TheBook)

19.9.6 내용 길이 제한

 

이제 body 길이가 200자 이상이면 뒤에 ...을 붙이고 문자열을 자르는 기능을 구현해 보겠습니다. 배열의 map 함수를 사용하여 배열 원소를 전체적으로 바꾸면 됩니다. 하지만 mongoose 조회 결과로 반환된 배열을 다음과 같이 처리한다면 원치 않는 데이터들도 함께 들어갑니다.

src/api/posts/posts.ctrl.js - list 중 일부

  const limitBodyLength = post => ({
    ...post,
    body: post.body.length < 200 ? post.body : `${post.body.slice(0, 200)}...`
  });
  ctx.body = posts.map(limitBodyLength);

[
    {
        “$_ _”: {
            “strictMode”: true,
            “selected”: {},
            “getters”: {},
            “_id”: “59d6066e80be1855e5ea7929”,
            “wasPopulated”: false,
            “activePaths”: {
                “paths”: {
                    “tags”: “init”,
                    (...)

 

이렇게 되는 이유는 mongoose를 이용하여 조회한 데이터들은 mongoose의 문서 인스턴스로 Getter, Setter 등 내장 함수들을 지니고 있기 때문입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.