У меня есть публикации, которая возвращает курсор, который выглядит следующим образом:Повторное использование Meteor Observer: изменит ли мой запрос на возврат публикации, чтобы не использовать this.userId сделать мой наблюдатель более многоразовым?
// Publication RETURNS THIS QUERY
Notepads.find({_id: notepadId, $or: [{userId: this.userId}, {'collaborators.userId': this.userId}], archived: false})
Как вы можете видеть, что запрос является уникальным для пользователя, так как он включает в себя this.userId
я использую this.userId
в публикации в форме безопасности. Вы получите только данные, если вы связаны с этим конкретным блокнотом.
В моем приложении несколько человек могут сотрудничать в одном блокноте. Чтобы сделать наблюдателя более многоразовым, эта настройка поможет моему приложению?
// Optimized publication
notepad = Notepads.findOne({_id: notepadId, $or: [{userId: @userId}, {'collaborators.userId': @userId}], archived: false})
if notepad?
// Optimized publication RETURNS THIS QUERY
return Notepads.find({_id: notepad._id, archived: false})
else
return
Я думаю, что это средство повторного использования наблюдателя. То, что публикация возвращает тот же запрос для любого пользователя, который подписывается на него. Так ли это правильно, эта оптимизация стоит того изменения?
привет. Я запутался. Можете ли вы еще раз взглянуть на оптимизированный запрос, который я сделал. Я сделал точно так, как ты сказал. Если сначала найдите блокнот, я верну курсор 'return Notepads.find ({_ id: notepad._id, archived: false})' Это изменение, которое я сделал – nearpoint
, за подробный ответ! Это хороший материал. Но я хочу уточнить один момент. Если многие пользователи сотрудничают в одном блокноте (тот же notepad._id), не изменилось бы это изменение? Что касается реактивности, код настраивается таким образом, что пользователь будет подписываться только после того, как он будет сотрудником. И если они будут удалены в качестве соавтора, в то время как они находятся в блокноте, он все равно синхронизирует блокнот, а на клиенте я могу посмотреть блокнот и прекратить подписку, если они больше не будут взаимодействовать. Так что, учитывая эти случаи, стоит ли это изменить? – nearpoint
Я думаю, стоит ли оптимизировать, если говорить о типичном сотрудничестве между блокнотами между 5 пользователями? 10 пользователей? 40 пользователей? Наверное, я бы предпочел не делать оптимизацию, если это практически не имеет никакого значения, и я теряю реактивность. – nearpoint