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 은 계정이 생성된 시각을 담습니다.

results matching ""

    No results matching ""