Mongoose findOne with exec do nothing

22 Views Asked by At

I would like to check if the chat partners already have conversation. If yes, I would like to push the new message into that messages array. Otherwise, I would like to create partner objects with the first messages in each other's private_messages array. I wrote this mongoose code but can't figure out why it doesn't do anything:

const { 
    sender_username,
    sender_small_photo,
    receiver_username,
    receiver_small_photo,
    current_message,
    date
} = req.body

await MemberModel.findOne({username:sender_username , "private_messages.partner": receiver_username})
    .exec( function (err , user) {
        if (err) 
            {
                console.log(err)
            }
        if (user) {
            MemberModel.update(
                {username:sender_username},
                {
                    $push: {
                        "private_messages.$.messages": 
                        {
                            sent: true,
                            date: date,
                            message: current_message
                        }
                    }
                }   
            )
        }
        else {
            MemberModel.update(
                {username:sender_username},
                {
                    $push: {
                        "private_messages": 
                        {
                            partner: receiver_username,
                            partner_photo: receiver_small_photo,
                            unseen:0,
                            messages: [
                                {
                                    sent: true,
                                    date: date,
                                    message: current_message
                                }
                            ]
                        }
                    }
                }    
            )
        }
    })

await MemberModel.findOne({username:receiver_username , "private_messages.partner": sender_username})
    .exec( function (err , user) {
        if (err) 
            {
                console.log(err)
            }
        if (user) {
            MemberModel.update(
                {username:receiver_username},
                {
                    $push: {
                        "private_messages.$.messages": 
                        {
                            sent: false,
                            date: date,
                            message: current_message
                        }
                    }
                }   
            )
        }
        else {
            MemberModel.update(
                {username:receiver_username},
                {
                    $push: {
                        "private_messages": 
                        {
                            partner: sender_username,
                            partner_photo: receiver_small_photo,
                            unseen:0,
                            messages: [
                                {
                                    sent: false,
                                    date: date,
                                    message: current_message
                                }
                            ]
                        }
                    }
                }    
            )
        }
    })
0

There are 0 best solutions below