Я пытаюсь создать промежуточное ПО, которое будет проверять, существует ли диалог между двумя пользователями в базе данных, поэтому, если его не существует, он создаст новый диалог. Я пытаюсь использовать moon goose $in
с 2 идентификаторами пользователей, но он возвращает любой разговор, в который включен любой из идентификаторов, и мне нужно получить только разговоры, идентификаторы которых вместе включены в массив пользователей.
Chat.findOne({
users: {
$in: [
mongoose.Types.ObjectId(MYUSER),
mongoose.Types.ObjectId(OTHERID2),
],
},
})
Итак, давайте предположим, что "MYUSER"
разговаривает с "RANDOMID"
, а затем я начинаю новый разговор с "OTHERID2"
, mon goose обнаруживает, что "MYUSER"
уже начал разговор, но он не проверяет, идет ли разговор между двумя пользователями.
Схема чата
const chatSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
lastMessage: { type: String },
updatedOn: { type: Date, default: Date.now },
users: [{ type: mongoose.Schema.Types.ObjectId, ref: "User" }],
});