【发布时间】:2015-01-17 10:10:14
【问题描述】:
我正在开发聊天应用程序,对话中的每个事件都有一个名为 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 中是否存在某种我没有考虑到的行为,这会影响 ObjectId 在 Schema 的混合类型字段中的保存方式?
此行为发生在保存时,而不是更新时。系统内的 Event.sender 字段没有更新。
【问题讨论】:
-
为什么要使用混合类型而不是在架构中添加
username和user_id字段? -
@JohnnyHK 那是我们早期采取的路线。知道这种变化的原因可能是什么吗?
-
没有线索。除非您可以提供重现它的示例代码,否则我不确定我们能提供什么帮助。
-
@JohnnyHK 想通了,原来这不是猫鼬问题。无论如何感谢您的回复。
标签: node.js mongodb mongoose objectid