Jamgreen
Jamgreen

Reputation: 11039

Count number comments in post in Meteor

If I want to count the number of comments a post has got, I will have to save the number of comments every time a new comment is either created or removed.

What is the most efficient and secure way to ensure the posts are updated with the number of comments every time a comment is either created or removed? I have tried Curser.observe() but it seems it causes some problems sometimes. I have looked through my code and it should be OK but sometimes some changes happend when they shouldn't so I'm afraid that observe() causes some problems when multiple objects are created at the same time.

I have looked at meteor-collection-hooks and they don't use observe. I thought observe was the best choice since it is native. How does others solve this?

Upvotes: 1

Views: 206

Answers (1)

David Weldon
David Weldon

Reputation: 64312

Don't use observe. It consumes resources and doesn't scale past one server (in N servers are observing the change, you will have N increments). I can recommend two possible options:

hooks

As you suggested, you can use collection-hooks to modify the count. Specifically you'd probably want to use after.insert and after.remove on your Comments collection. Hooks don't require extra resources - they just patch the underlying collection code to run your callback.

Recommended reading: A Look At Meteor Collection Hooks

methods

If you use methods to insert and remove your comments, you can also modify your comment counts at the same time. This has the advantage of not requiring an external package, however it also requires some mixing of concerns in your methods.

Upvotes: 4

Related Questions