Какова лучшая практика для последовательного обновления нескольких документов и схем в монго, а также обновления кода? - PullRequest
0 голосов
/ 20 октября 2019

У меня есть коллекция под названием User. В нем есть поле profile, которое имеет два поля:

const mongoose = require('mongoose')
const Schema = mongoose.Schema

const User = new Schema({
    profile: {
        name: {
          type: String,
          match: [
            /^([^0-9]*)$/,
            'WrongNameFormat'
          ]
        },
        lastName: {
            type: String,
            match: [
                /^([^0-9]*)$/,
                'WrongLastNameFormat'
            ]
        }
    }
})

Я хочу переименовать name в firstName, создав сценарий миграции.

  1. Добавить firstName в User схема.
  2. Копирование name значений в firstName значения.
  3. Удаление name значений и name из схемы.
  4. Выполнениевышеупомянутые шаги как транзакция монго.

Я думаю, что некоторые проблемы могут возникнуть при обновлении базы данных в рабочем состоянии:

  1. Мне также нужно изменить код сервера так, чтобыкод только создает / обновляет firstName поле.
  2. Существует определенное условие гонки между тем, когда будет обновляться код сервера, и тем, когда будет обновляться схема, поэтому при обновлении документов некоторые коды сервера документов все еще могут использоватьold name.

Каков наилучший способ решения таких проблем? Проводит ли он техническое обслуживание на сервере, чтобы пользователи приложения не вмешивались в процесс кода сервера / процесс миграции?

...