3-1. 계정 컬렉션 데이터 스키마 디자인
우리가 앞으로 만들 게정 컬렉션 데이터 스키마와 모델은 Account
라는 이름으로 만들도록 하겠습니다.
먼저, 다음 파일을 생성하고 스키마를 작성하세요.
src/models/account.js
const mongoose = require('mongoose');
const { Schema } = mongoose;
const Account = new Schema({
profile: {
username: String,
thumbnail: { type: String, default: '/static/images/default_thumbnail.png' }
},
email: { type: String },
// 소셜 계정으로 회원가입을 할 경우에는 각 서비스에서 제공되는 id 와 accessToken 을 저장합니다
social: {
facebook: {
id: String,
accessToken: String
},
google: {
id: String,
accessToken: String
}
},
password: String, // 로컬계정의 경우엔 비밀번호를 해싱해서 저장합니다
thoughtCount: { type: Number, default: 0 }, // 서비스에서 포스트를 작성 할 때마다 1씩 올라갑니다
createdAt: { type: Date, default: Date.now }
});
module.exports = mongoose.model('Account', Account);
프로필 정보에서는 '/static/images/default_thumbnail.png'
을 기본 프로필 사진으로 사용합니다. 이 이미지는 나중에 설정을 해주도록 하겠습니다.
로컬 회원가입을 했을 때에는, 전달받은 비밀번호를 해싱하여 password 값으로 저장하고, 소셜 계정 로그인을 했을 때에는, 로그인을 할 때 각 소셜 서비스에서 회원을 구분하기위해서 제공해주는 id 값과, 해당 계정의 정보를 가져올때 필요한 accessToken 값을 데이터에 저장합니다.
thoughtsCount 는 유저가 서비스에서 포스트를 작성 할 때마다 1씩 더해지는 값이며, createdAt 은 계정이 생성된 시각을 담습니다.