我正在尝试创建一个中间件,它将检查数据库中是否存在两个用户之间的对话,如果不存在,则会创建一个新的对话。我尝试使用 mongoose 的 $in
与这两个用户的 ID,但它返回任何包含任何 ID 的对话,我需要只检索包含在用户数组中同时包含这两个 ID 的对话。
Chat.findOne({
users: {
$in: [
mongoose.Types.ObjectId(MYUSER),
mongoose.Types.ObjectId(OTHERID2),
],
},
})
假设“MYUSER”正在与“RANDOMID”进行对话,然后我开始与“OTHERID2”进行新的对话,mongoose检测到“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" }],
});