Meteor:反应式更新,级联 delete/update。规范化与反规范化

Meteor: Reactive update, cascaded delete/update. Normalizing vs Denormalizing

如何在已加入的文档中进行级联删除、更新和反应更新?例如,我加入 Posts collection 与 Meteor.users collection 和 userId() 作为作者。我可以在 Posts collection 上执行转换功能以获取作者的用户数据,例如 username 并在任何 post 上显示作者的 username。问题是当用户更改 his/her username 时,现有的 post 不会反应性地更新作者的 username。当您删除 parent 个文件时,child 个文件仍然存在。我使用了 publish-compositecollection-helpers 等流行的智能包,但问题仍然存在。任何专家流星开发人员都可以帮助我吗?谢谢。

如果您想使用 collection-hooks 来解决这个问题,下面的伪代码应该可以帮助您:

// run only on the server where we have access to the complete dataset
if (Meteor.isServer) {
  Meteor.users.after.update(function (userId, doc, fieldNames, modifier, options) {
    var oldUsername = this.previous.username;
    var newUsername = doc.username;
    // don't bother running this hook if username has not changed
    if (oldUsername !== newUsername) {
      Posts.update({
        // find the user and make sure you don't overselect those that have already been updated
        author: userId, 
        authorUsername: oldUsername
      }, {$set: {
        // set the new username
        authorUsername: newUsername
      }}, {
        // update all documents that match
        multi: true
      })
    }
  }, {fetchPrevious: true});
}