• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

user 객체 읽는법

21.11.11 11:34 작성 조회수 161

0

let { User, Comment } = require('./models');
let user = await User.findOne({
      include: [{
         model: Comment,
      }]
   });
   console.log("===================================================================================================")
   console.log(user)
   console.log(user.comment)
===================================================================================================
User {
  dataValues: {
    id: 1,
    name: 'zero',
    age: 24,
    married: false,
    comment: '자기소개1',
    created_at: 2021-11-09T09:05:55.000Z,
    Comments: [ [Comment] ]
  },
  _previousDataValues: {
    id: 1,
    name: 'zero',
    age: 24,
    married: false,
    comment: '자기소개1',
    created_at: 2021-11-09T09:05:55.000Z,
    Comments: [ [Comment] ]
  },
  _changed: Set(0) {},
  _options: {
    isNewRecord: false,
    _schema: null,
    _schemaDelimiter: '',
    include: [ [Object] ],
    includeNames: [ 'Comments' ],
    includeMap: { Comments: [Object] },
    includeValidated: true,
    attributes: [ 'id', 'name', 'age', 'married', 'comment', 'created_at' ],
    raw: true
  },
  isNewRecord: false,
  Comments: [
    Comment {
      dataValues: [Object],
      _previousDataValues: [Object],
      _changed: Set(0) {},
      _options: [Object],
      isNewRecord: false
    }
  ]
}
자기소개1

 

1번 질문 :

user객체를 쳤더니 저런식으로 나오는데,
어떻게 객체안의 키들을 거쳐서 user.comment가 나오는지 과정좀 설명해 주실수 있나요?

일단 제가 생각해본 봐로는
user.comment하면
User.dataValues.comment로 되는것 같아요. 근데 객체생김새가 다른데 어떻게 저렇게 되는지 궁금하네요..

 

2번 질문 :

그리고 user.Comments.comment(댓글 테이블의 comment필드)를 조회해보면 undefined 뜨네요. 어떻게 조회하나요?
(참고로 워크밴치에서 따로 제가 comment테이블에 insert into로 해주고, 서버도 다시 시작하였습니다)

답변 2

·

답변을 작성해보세요.

0

네, user 속성에 접근하면 dataValues의 속성을 가져오는 게 맞습니다. 다양한 방식으로 가져올 수 있습니다. 실제로는 dataValues 속성에 접근하는 경우는 거의 드뭅니다. 바로 user.nickname 이런 식으로 가져오죠.

https://sequelize.org/master/class/lib/model.js~Model.html

0

2번 질문은 자세히 보니까, 배열안에 넣어져있어서,
user.Comments[0].comment
로 해결하였습니다!