Como obter o resultado de uma função Meteor.call em um modelo

Eu estou tentando fazer uma função de paginação para uso em um cliente do Meteor. Portanto, preciso saber a contagem de registros no servidor.

No servidor (no servidor / bootstrap.coffee) eu tenho este código:

<code>Meteor.methods
  ContactsCount: ->
    Contacts.find().count()
    console.log("Totalrecords: " + Contacts.find().count())
</code>

A parte do servidor é chamada (exibe o número correto no console - 40)

No cliente eu tenho:

<code>$.extend Template.pager,
  GetRecordCount: ->
    Meteor.call("ContactsCount", (error,result) ->
    console.log('r', result)
</code>

No console do navegador, Template.pager.RecordCount () retorna

Indefinido
r 30

Eu entendo que o 'indefinido' é o retorno de Template.pager.RecordCount () e é retornado primeiro.

Quando o resultado é disponibilizado, ele é exibido no console.

Mas como obtenho o valor do resultado no meu modelo de pager?

Estou pesquisando callbacks java por algumas horas agora, mas o que eu tente, eu não consigo fazê-lo funcionar.
Por favor ajude.

Aqui está uma atualização.

Eu olhei para a documentação para invalidar. Mas o exemplo não me ajuda muito. A temperatura é definida no cliente com um parâmetro na chamada de função. Portanto, não há retorno de chamada usado. O retorno de chamada foi o meu problema.

Eu resolvi assim:

<code>Meteor.call("ContactsCount", myFunc)

### This is the call back function when the server
    function 'Meteor.call("ContactsCount", myFunc)' is called
    When the result from the server call is returned, this will be executed ###
myFunc = (error, result) ->
if !error
    pages = result / Session.get("page_size")
    Session.set "total_pages", Number(pages.toFixed(0) + 1)
    Session.set "total_records", result
if error
    console.log(error)
</code>

Isso funciona. Ainda estou me perguntando se essa é a melhor solução. Eu tenho um monte de chamadas Session.set () e talvez haja muito gatilho acontecendo.

<code>### This function will set the css classes
    for enabling or disabling the pager buttons
    in the Pager Template in myapp.html ###
SetPagerButtons = ->
 Meteor.call("ContactsCount", myFunc)
 if Session.get("current_page") <= 1
    Session.set "nextEnabled", ""
    Session.set "lastEnabled", ""
    Session.set "firstEnabled", "disabled"
    Session.set "previousEnabled", "disabled"
    Session.set "last_record", false
 else if Session.get("last_record") or Session.equals("current_page",  Session.get("total_pages"))
    Session.set "nextEnabled", "disabled"
    Session.set "lastEnabled", "disabled"
    Session.set "firstEnabled", ""
    Session.set "previousEnabled", ""
 else
    Session.set "nextEnabled", ""
    Session.set "lastEnabled", ""
    Session.set "firstEnabled", ""
    Session.set "previousEnabled", ""
    Session.set "last_record", false
</code>

questionAnswers(1)

yourAnswerToTheQuestion