What is best pattern for non reactive data?

Hi everyone we are working on app in which about 60% is non-reactive so we are doing in this way:-

  1. create meteor methods in server side and call it from client
    Meteor.methods({ fetchData:(limit){ return db.someData.find({},{limit:limit}.fetch() } });
  1. call the methods from client
    Template.searchMovies.onCreated(function(){ var instance=this; instance.movies=new ReactiveVar(null); instance.autorun(function(){ Meteor.call('fetchData',20,function(err,res){ if(!err) instance.movies.set(res); } }) });
    ---------------helpers-------------------
    Template.searchMovies.helpers({
    movies:(){ return Template.instance().movies.get() } });
    ----------------blaze--------------------
    {{#if movies}}
    {{#each movies}}
    {{> movieDisplay}}
    {{/each}}
    {{else}}
    {{> loading text=‘loading movies’}}
    {{/if}}

is this better way to do?

Try this package https://atmospherejs.com/ouk/static-subs
Your workflow is same as writing publications and subscribing to them.
Only difference is that you register publication with StaticSubs.publish and subscribe with StaticSubs.subscribe
Signature of these functions are matching thous on Meteor

how its same as pub/sub?

The repo has an example.

With this package you don’t need to register a method and when calling it on client think where to put received data.
With this package you publish data same as you write Meteot.publish.

This is how you retrieve reactive data

Meteor.publish('stores', function() {
    return [
        Stores.find(),
        StoredLocations.find()
    ]
})

Meteor.subscribe('stores')

// then somewhere
let location = StoreLocations.findOne({ ... })
let stores = Stores.find({ locationId: location._id }).map( ... )

Using ouk:static-subs package you instead write:

StaticSubs.publish('stores', function() {
    return [
        Stores.find(),
        StoredLocations.find()
    ]
})

StaticSubs.subscribe('stores')

// then somewhere
let location = StoreLocations.findOne({ ... })
let stores = Stores.find({ locationId: location._id }).map( ... )

Under the hood the package use method call and inject received data into appropriate minimongo collections. You don’t need to use any other persistence on client.