Reactividad del servidor de meteoros

Tengo una aplicación con dos colecciones.

Books = new Meteor.Collection("books");
Chapters = new Meteor.Collection("chapters");

donde los documentos se parecen mucho a esto:

Book = {
  _id : BookId,
  users_who_can_view_this_book : [userId, userId]
}

Chapter = {
  book : BookId
}

En el servidor publico libros y capítulos como este:

Meteor.publish('books', function() {
  return Books.find({ users_who_can_view_this_book : { $in : [this.userId] } });
});

Meteor.publish('chapters', function() {
  var bookIds = Books.find({
    users_who_can_view_this_book : {$in : [this.userId] }
  }).map(function(book) {
    return book._id;
  });
  return chapters.find({book: {$in : bookIds}});
});

En el cliente me suscribo así:

Meteor.subscribe('books');
Meteor.subscribe('chapters')

Entonces, si un usuario tiene acceso a un libro, quiero que el cliente reciba el libro y sus capítulos correspondientes. Esto funciona bien en la carga inicial.

Ahora, en elservidor Quiero poder agregar o eliminar usuarios de la lista en los documentos del libro y, cuando lo haga, actualizar el cliente con los nuevos capítulos. A partir de ahora, el cliente solo obtiene la actualización en los libros, pero los capítulos que se refieren a ese libro no se agregan / eliminan del cliente.

Entiendo que necesito cambiar la forma en que funcionan los trabajos de publicación de los capítulos. He mirado los documentos para cursor.observe y cursor.observeChange, pero realmente no puedo entender cómo usarlos en este caso. Yo tambien he estudiadoesta respuesta Pero no lo consigo todo. Me complacería explicarle en qué partes de esa respuesta tengo preguntas, pero como es un caso ligeramente diferente, no sé si es relevante. De todos modos, alguna orientación sobre este o un ejemplo de trabajo sería muy apreciada.