FILOTチャットアプリケーション-1(モデル)の作成



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"},
});


  • 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,
        }
    );
  • チャットルームモデルを実現し、タイムスタンプ:trueの機能を理解しました.