2015-10-31 2 views
0

Как сделать каскадное удаление, обновление и реактивное обновление в существующих объединенных документах? Скажем, например, я присоединяюсь к коллекции Posts с коллекцией Meteor.users с userId() в качестве автора. Я мог бы сделать функцию преобразования в коллекции Posts, чтобы получить пользовательские данные автора, например username и показать username автора на любое сообщение. Проблема заключается в том, когда пользователь меняет свой username, существующие сообщения не будут обновлять авторский username реактивно. И когда вы удаляете родительский документ, дочерние документы все еще существуют. Я использовал популярные смарт-пакеты, такие как publish-composite и collection-helpers, но проблема все еще существует. Любой эксперт-метеорит может помочь мне в этом? Спасибо.Метеор: реактивное обновление, каскадное удаление/обновление. Нормализация vs Денормализация

+0

Этот вопрос должен вообще быть дан ответ. Вы должны четко сформулировать свою проблему и, возможно, сузить ее до одной темы. –

+0

Извините, я разместил это на метеоритных форумах, более подходящем месте. Прямо сейчас я смотрю на этот смарт-пакет под названием hook-hooks. Похоже, это решит мою проблему. – Zaya

ответ

1

Если вы хотите использовать коллекцию крючки, чтобы решить эту проблему, следующий псевдокод должен получить ты:

// 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}); 
} 
+0

Удивительно. Я получаю публикации-композитные, коллекционные крюки и сборщики-помощники, которые хорошо работают вместе. Но я не понимаю, почему я не могу использовать сборщики или функцию преобразования в FS.Collection. Документ CollectionFS сообщает, что вы можете сделать это на основе Mongo.Collection. Мысль ** MyCollectionFS.files.helpers ({}) ** будет работать, но это не так. В любом случае, большое вам спасибо. – Zaya

+0

без проблем. если текущий ответ работает на вас, вы можете сообщить всем, отметив его. не стесняйтесь публиковать еще один вопрос для проблемы CollectionFS. –

+0

Я разместил вопрос для этого, вот ссылка http://stackoverflow.com/questions/33444401/meteor-collection-helpers-or-transform-on-fs-collection – Zaya

Смежные вопросы