FILOTチャットアプリケーション-1(モデル)の作成
10235 ワード
FILOTチャットアプリケーション-1の作成
コンピュータ専攻で最初のプロジェクトのリアルタイムチャットアプリケーションを作成します.
正式にプロジェクトを始めてもうすぐ2ヶ月になりますが.
過去の記憶を取り戻し、一つ一つ記録することにした.
back - nodeJs(express) / mongoDB(mongoose) / socketIo
front - flutter
User Model
const userSchema = new mongoose.Schema({
id: {type: String, required: true, unique: true},
password: {type: String, required: true},
name: {type: String, required: true},
rooms: [{type: mongoose.Schema.Types.ObjectId, ref: "ChatsRoom"}],
phone_number: {type: String, default: "null"},
state: {type: Number, default: 0},
role: {type: String, default: "null"},
github: {type: String, default: "null"},
email: {type: String, default: "null"},
});
const userSchema = new mongoose.Schema({
id: {type: String, required: true, unique: true},
password: {type: String, required: true},
name: {type: String, required: true},
rooms: [{type: mongoose.Schema.Types.ObjectId, ref: "ChatsRoom"}],
phone_number: {type: String, default: "null"},
state: {type: Number, default: 0},
role: {type: String, default: "null"},
github: {type: String, default: "null"},
email: {type: String, default: "null"},
});
default値にわざと「null」を付けるのは、後でフロントにユーザの個人状態が表示されるときにnull値によるエラーを防止するためです.
ChatsRoomモデルで猫王と関係を結んだ.Chatモデルとの関係を考え、あまり必要ないと思って参加しませんでした.
Chat Model
const chatSchema = new mongoose.Schema(
{
message: {type: String, required: true},
chatRoom: {
type: mongoose.Schema.Types.ObjectId,
required: true,
ref: "ChatsRoom",
},
user: {type: String, required: true},
},
{timestamps: true}
);
その後、グループ内でアイコンをクリックし、ユーザーが情報を入手しやすくし、ChatsRoomモデルと連絡を取りました.
ユーザモデルとの関係を確立しないことを決定しstringでnameを保存する.理由は不要なデータベース呼び出しだと思っていたので、今思えばユーザーとの関係が築けるはずです.
ChatsRoom
const chatsRoomSchema = new mongoose.Schema(
{
roomNum: String,
user: [
{type: mongoose.Schema.Types.ObjectId, required: true, ref: "User"},
],
chats: [
{type: mongoose.Schema.Types.ObjectId, required: true, ref: "Chat"},
],
},
{
timestamps: true,
}
);
Reference
この問題について(FILOTチャットアプリケーション-1(モデル)の作成), 我々は、より多くの情報をここで見つけました https://velog.io/@wonjongseo/FILOT-채팅앱-만들기-1-Modelテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol