Используя Node.js и Mongoose, какие шаги сохранить документ и второй документ, который ссылается на первый? - PullRequest
0 голосов
/ 01 ноября 2019

Этот блестящий ответ от Soviut объясняет логические шаги, необходимые для использования проверки электронной почты для проверки и активации новых пользователей.

Однако, используя node.js и mongoose Я не уверен, какие шаги необходимы для сохранения документа, а затем второго документа, который ссылается на идентификатор первого документа.

  1. Есть ли способ сохранить оба документа одновременно?
  2. Нужно ли сохранять первый документ, а затем использовать findOne, чтобы найти его и скопировать его идентификатор во второй документ? ?
  3. Есть ли передовая практика для такого рода проблем?

Вот 2 примера схемы, которые могут сделать это понятнее.

Новый пользователь:

const UserSchema = new mongoose.Schema({
    email: {
        type: String,
        required: true
    },
    yourName: {
        type: String,
        required: true
    },
    businessName: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    active: {
        type: Boolean,
        default: false
    }
});

Временный хэш, используемый для проверки:

const NewUserHash = new mongoose.Schema({
    randomHash: {
        type: String
    },
    // what is the best practice for getting the ID from a UserSchema document and saving it here?
    referenceToUser: {  
        type: String
    },
    createdAt: {
        type: Date,
        default: Date.now,
        expires: 7200
    }
});

1 Ответ

1 голос
/ 02 ноября 2019

Я думаю, что вы пытаетесь проверить пользователя, как только пользователь проверяет электронную почту, если это так, почему бы не иметь две схемы, где, когда пользователь регистрируется впервые, просто добавьте данные во временную коллекцию, как только пользователь отправитзапрос на успешное подтверждение просто извлеките данные из временной коллекции и вставьте их в постоянную, а затем удалите временную запись в коллекции.

да, вы можете сохранить оба документа, используя save, но один за другим, и да, если вам нужно связать, сначала нужно получить идентификатор, я бы предпочел, чтобы описанный выше метод был бы лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...