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
}
]
}
}
}
)
}
})