Encuentra uno o crea con Mongoose

yo tengo

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

Mi problema es que si no se proporciona una identificación de página, solo debería tomar la primera página disponible dadas algunas condiciones, que se realiza mediante

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

pero si no se encuentra ninguna página, debería crear una nueva página y usarla, lo que se hace con

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

Pero, ¿cómo combino todo esto con la menor cantidad de líneas posible?

Tengo mucha lógica dentro

page => { ... }

así que me gustaría mucho hacer esto de manera inteligente, así puedo evitar hacerlo así

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;
        ..
      });
    }
  });
}

Estoy pensando que tal vez podría asignar una estática al esquema con 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);
  });
};

Respuestas a la pregunta(8)

Su respuesta a la pregunta