It depends on the template (and not on the whole opinion based on imo).
Active Record Template
Quote from Fowler:
An object that wraps a string in a database table or view encapsulates access to the database and adds domain logic to this data.
The ActiveRecord pattern is usually highlighted during prototyping and is a good idea sometimes in very small applications where there is a 1-1 mapping between objects and DB strings. As a rule, you want to separate the logic of saving the object and the logic of the real object of the domain, since they are essentially different responsibilities.
This is one of the easiest ways to logically manage data storage.

For example, this is what Backbone models and collections do with their sync() method. This makes them persist on the server. Often the reason you see that larger server applications do not use sync() at all in favor of implementing their own adapters. In the end, in the Backbone world, it creates a 1-1 mapping between your REST API and your domain objects, which makes your domain objects and data transfer objects the same, which can be difficult to grow as your application grows.
Storage template
Re-quoting Fowler:
Intermediate interaction between the display layers of a domain and data using an interface similar to a collection to access domain objects.
A repository is usually the best design pattern for larger applications, as it removes the persistence logic from your domain object, so it is better to separate problems .
The implementation is reasonable, the repository usually looks like this: 
However, for its users, the repository might look like this:

Like any abstraction, another object of responsibility has some overhead, however - as the application grows, it begins to pay off. If you create $resource using Angular and transfer it to a service that maps these objects from the db request to your domain objects (your data converter) and then requests this service, such as a collection, this is the store for you.