MongoDB Создание документа и в случае успеха создать еще один документ - PullRequest
0 голосов
/ 26 февраля 2019

Я работаю над приложением, используя Node.js и MongoDB.У меня есть особый вариант использования, когда я создаю нового пользователя и в случае успеха добавляю ObjectId пользователя в другую коллекцию под названием «города», выбирая город пользователя, если он не существует, или создаю новый и добавляю ObjectId пользователя в поле «Список подписчиков» города.документ.Схемы выглядят следующим образом:

CitiesSchema: 
var CitiesSchema = new Schema({
  City:{
    type: String
  },
  SubscribersList: [{type: Schema.ObjectId}]
});

User Schema:
var UsersSchema = new Schema({
  emailId: {
    type: String,
    required: 'Mandatory field'
  },
  city: {
    type: String
  },
  subscribedOn: {
    type: Date,
    default: Date.now
  },
  lastEmailSent: {
    type: Date,
    default: null
  },
  isActive: {
    type: Boolean,
    default: true
  }
});

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

1 Ответ

0 голосов
/ 27 февраля 2019

Вы можете использовать нотацию then, чтобы продолжить обработку после того, как вы создали User.Как это

UserSchema.create({
    emailId: 'email@exmaple.com',
    city: 'Rome'
  })
  .then(user => {
    // For example if you want to push to the city of the user

    CityScema.update({
      City: user.city
    }, {
      $push: {
        SubscribersList: user._id
      }
    }).then(() => {
      res.sendStatus(200);
    }).catch(err => res.status(500).send(err));

  }).catch(err => {
    // Handle your errors here
    console.error(err);
  });

Убедитесь, что вы проверяете документы Mongoose по моделям для получения дополнительной информации

...