私はチャットアプリケーションに取り組んでおり、会話の各イベントには送信者という名前のフィールドがあります-次のようになります:
var eventSchema = Schema({
sender: {
type: {}, //username && user_id fields
required: true
}
}
Event が作成されるたびに、sender フィールドに次のようなオブジェクトを渡します。
{
username: String,
user_id: ObjectId("")
}
Event.sender の user_id フィールドが毎回 ObjectId 型であることは確かです。
ただし、データベースでは、保存されたイベントに String && 型の Event.sender.user_id が含まれる場合があり、ObjectId() 型として保存された Event.sender.user_id が含まれることがあります。
{
username: String,
user_id: ObjectId("") // sometimes it saves like this
}
{
username: String,
user_id: String // other times it saves like this
}
変化はかなり頻繁に発生し、同じユーザーによって送信されたイベントがあり、この変化を示す 10 分間の時間枠内で同じコントローラー関数を通過します。
スキーマの混合型フィールド内での ObjectIds の保存方法に影響する、説明していない Mongoose の特定の動作はありますか?
この動作は、更新ではなく、保存時に発生します。システム内の Event.sender フィールドに対して行われる更新はありません。