Encontre um ou crie com o Mongoose

eu tenho

Page.findById(pageId).then(page => {
  const pageId = page.id;
   ..
});

Meu problema é que, se nenhum ID de página for fornecido, ele deverá apenas pegar a primeira página disponível, com algumas condições, o que é feito por

Page.findOne({}).then(page => {
  const pageId = page.id;
  ..
});

mas se nenhuma página for encontrada, ela deve criar uma nova página e usá-la, o que é feito com

Page.create({}).then(page => {
  const pageId = page.id;
  ..
});

Mas como combinar tudo isso com o mínimo de linhas possível?

Eu tenho muita lógica acontecendo dentro

page => { ... }

então eu gostaria muito de fazer isso de forma inteligente, para evitar assim

if (pageId) {
  Page.findById(pageId).then(page => {
    const pageId = page.id;
     ..
  });
} else {
  Page.findOne({}).then(page => {
    if (page) {
      const pageId = page.id;
      ..
    } else {
      Page.create({}).then(page => {
        const pageId = page.id;
        ..
      });
    }
  });
}

Eu estou pensando que talvez eu possa atribuir uma estática ao esquema com algo como

pageSchema.statics.findOneOrCreate = function (condition, doc, callback) {
  const self = this;
  self.findOne(condition).then(callback).catch((err, result) => {
    self.create(doc).then(callback);
  });
};

questionAnswers(8)

yourAnswerToTheQuestion