강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

th님의 프로필 이미지
th

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

Sequelize Model 설계에 질문이 있습니다.

해결된 질문

작성

·

236

0

제가 티켓, 유저 모델로 소유자, 만든 이의 sequelize로 만들려고 합니다.

유저 모델 ( User)

db.User.belongsToMany(db.Ticket, {through: 'OwnTicket', as: 'Owned'} );
db.User.belongsToMany(db.Ticket, {through: 'CreateTicket',as: 'Created'})

티켓 모델 (Ticket)

db.Ticket.belongsToMany(db.User, {through: 'OwnTicket', as: 'Ownes'})
db.Ticket.belongsToMany(db.User,{through: 'CreateTicket', as: 'Creates'})

위와 같이 모델에 설정하고

db에 저장된 티켓입니다.

생성된 티켓들은 만든 이에 저장하려고 하는데

const user = await User.findOne({
    where: { id: req.user.id}
})
const tickets = await Ticket.findAll({
    where: { PerformanceId: performance.id}
})
await user.addTickets(tickets.products.map((v) => v[0]))

이런 식으로 할려고 하였는데 tickets이 배열 타입이 아니라서 map method를 사용할 수 없다고 하는데 배열로 바꾸면 이렇게 하면 되는건가요?

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

tickets가 아니라 tickets.products가 배열이 아닌 것 아닌가요? products는 왜 쓰신건가요?

th님의 프로필 이미지
th
질문자

아 블로그 찾다가 메소드인줄 알았는데 잘못 썼습니다. tickets이 맞습니다. 근데 tickets으로 하면

TypeError: user.addTickets is not a function

라고 뜨는데

await user.addTickets(tickets.map((v) => v[0]))

문제라고 하는데 무엇이 잘못된지 잘모르겠습니다.

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

addTickets가 없죠. as를 Owned랑 Created로 하셨으니까요. addOwned addCreated는 있을 겁니다.

th님의 프로필 이미지
th
질문자

아 감사합니다.. 제가 잘못 생각했네요.. 답변 감사합니다!!

th님의 프로필 이미지
th

작성한 질문수

질문하기