我正在开发聊天应用程序,对话中的每个事件都有一个名为 sender 的字段 - 如下所示:
var eventSchema = Schema({
sender: {
type: {}, //username && user_id fields
required: true
}
}
每次创建事件时,我都会为发件人字段传入如下所示的对象:
{
username: String,
user_id: ObjectId("")
}
我很肯定 Event.sender 中的 user_id 字段每次都是 ObjectId 类型。
但是,在数据库中,保存的事件有时具有 String 类型的 Event.sender.user_id && 其他时间 Event.sender.user_id 保存为 ObjectId() 类型。
{
username: String,
user_id: ObjectId("") // sometimes it saves like this
}
{
username: String,
user_id: String // other times it saves like this
}
这种变化相当频繁地发生,并且有由同一用户发送的事件,在 10 分钟的时间范围内通过相同的控制器功能,表现出这种变化。
Mongoose 中是否存在某种我没有考虑的行为,这会影响 ObjectIds 在 Schema 的混合类型字段中的保存方式?
此行为发生在保存上,而不是更新上。系统内没有对 Event.sender 字段进行更新。