В настоящее время я работаю над API и пришел к вопросу: как лучше всего выполнять медленную миграцию документов.Например:
Версия 1 документа имеет следующую структуру:
_id: mongoose.Schema.Types.ObjectId,
email: { type: String, required: true },
username: { type: String, default: null },
password: { type: String, required: true },
registeredOn: { type: Date, default: Date.now },
permission_level: { type: Number, default: constants.LEVELS.DEFAULT },
settings: {
usesCommunity: { type: Boolean, default: false }
}
Но в новых документах (Версия 2)
у меня есть дополнительное поле "personal_info"например:
_id: mongoose.Schema.Types.ObjectId,
email: { type: String, required: true },
username: { type: String, default: null },
password: { type: String, required: true },
registeredOn: { type: Date, default: Date.now },
permission_level: { type: Number, default: constants.LEVELS.DEFAULT },
settings: {
usesCommunity: { type: Boolean, default: false }
},
personal_info: {
first_name: { type: String, default: null },
last_name: { type: String, default: null },
date_of_birth: { type: Date, default: null }
}
Каков наилучший способ «ленивой» миграции документов, у которых еще нет этого поля «personal_info»?
Например, если я попытаюсь получитьДанные "personal_info", я получил бы ошибку, если документ все еще версия 1 вместо версии 2.
Есть ли какая-либо библиотека или логический / простой способ сделать это?