-
Notifications
You must be signed in to change notification settings - Fork 0
/
models.js
61 lines (56 loc) · 1.51 KB
/
models.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// MongoDB 스키마 정의
const mongoose = require('mongoose');
const { Schema } = mongoose;
// QUESTION 스키마
const questionSchema = new Schema({
text: { type: String },
Question: { type: String },
Answer: {
answer: { type: String, required: true },
disclaimer: { type: String },
images: [String],
references: { type: String }
},
QDate: { type: Date, default: Date.now }
});
// CHAT 스키마
const chatSchema = new Schema({
Cname: { type: String },
Cdate: { type: Date, default: Date.now },
Questions: [{ type: Schema.Types.ObjectId, ref: 'Question' }]
});
const userSchema = new mongoose.Schema({
email: {
type: String,
required: true,
unique: true, // 이메일은 중복되지 않아야 함
trim: true, // 앞뒤 공백 제거
match: /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/ // 이메일 형식 검증
},
password: {
type: String,
required: true,
minlength: 8 // 최소 8자 제한
},
nickname: {
type: String,
required: true,
trim: true, // 앞뒤 공백 제거
minlength: 2, // 닉네임 최소 길이
maxlength: 20 // 닉네임 최대 길이
},
joinedAt: {
type: Date,
default: Date.now // 기본값으로 현재 시간
},
Chats: [{ type: Schema.Types.ObjectId, ref: 'Chat' }],
num_of_question: {
type: Number,
default: 0
}
});
// 각 스키마에 대한 모델 생성
const User = mongoose.model('User', userSchema);
const Chat = mongoose.model('Chat', chatSchema);
const Question = mongoose.model('Question', questionSchema);
module.exports = { User, Chat, Question };