Meteor session object does not work reactively

I have two pages, fila.jsand retirada.js.

fila.jscontains a function with the name atualizarChamadasthat I export to retirada.js.

When I call a function from fila.js, it works fine, but when I call it in retirada.js, the session object or reactive-var does not work in the helper inactive.

My function located in fila.js:

export default function atualizarChamadas() {
    let chamadas = Chamadas.find({medico: 1},{sort: {data_inicio: -1}}).fetch();
    //Session.set("chamadas", chamadas);
    ChamadasReactive.set(chamadas);
}

My template helpers

    Template.fila.helpers({
    chamadasAtendimento: function() {
        //return Session.get("chamadas");
        return ChamadasReactive.get().filter((el)=>{
            return el.status == 'A';
        }).slice(0,11);
      }
});

Template.fila.helpers({
    chamadasEspera: function() {
        //return Session.get("chamadas");

        return ChamadasReactive.get().filter((el)=>{
            return el.status == 'E';
        }).slice(0, 11);
      }
});

Template.fila.helpers({
    chamadasFinalizada: function() { 
        return ChamadasReactive.get().filter((el)=>{
            return el.status == 'F';
        }).slice(0, 11);
      }
});

Q fila.jsI call a function and it works fine:

    Template.fila.events({
        "submit form": function (e, template){
            e.preventDefault();
            atualizarChamadas();
        }

});

I have this flame pattern that works fine when a function is called from fila.js:

<tbody>  
        {{#each chamada in chamadasEspera}}
            <tr class="success">
                <td>{{chamada.senha}}</td>
                <td>{{chamada.data_inicio}}</td>
                <td></td>
                <td>
                    <select id="{{chamada._id}}" class="form-control">
                        <option value="E">Esperando</option>
                        <option value="A">Atendimento</option>
                        <option value="F">Finalizado</option>
                    </select>
                </td>
                <td><button id="{{chamada._id}}" value="{{chamada.senha}}" name="{{chamada.status}}" class="btn btn-block">Chamar</button></td>

            </tr>
         {{/each}}
    </tbody>


    <br/>

    <tbody>
    {{#each chamada in chamadasAtendimento}}
            <tr class="danger">
                <td>{{chamada.senha}}</td>
                <td>{{chamada.data_inicio}}</td>
                <td></td>
                <td>
                    <select id="{{chamada._id}}"  class="form-control">
                        <option value="A">Atendimento</option>
                        <option value="E">Esperando</option>
                        <option value="F">Finalizado</option>
                    </select>
                </td>
                <td><button id="{{chamada._id}}" value="{{chamada.senha}}"  name="{{chamada.status}}" class="btn btn-block">Chamar</button></td>
             </tr>
     {{/each}}
    </tbody>

    <br/>
    <tbody>
    {{#each chamada in chamadasFinalizada}}
        <tr class="info">
            <td>{{chamada.senha}}</td>
            <td>{{chamada.data_inicio}}</td>
            <td>{{chamada.data_fim}}</td>
            <td>
                <select id="{{chamada._id}}"  class="form-control">
                    <option value="F">Finalizada</option>
                    <option value="E">Esperando</option>
                    <option value="A">Atendimento</option>
                </select>
            </td>
            <td></td>
        </tr>
    {{/each}}
     </tbody>
  </table>
  {{/if}}

On my page retirada.js, I have this code that calls atualizarChamadas, but it does not work reactively:

 Template.retirada.events({
    "click button": function(e,template){
        let newPass = e.target.id,
            id = Retirada.find({}).fetch()[0]._id;

        console.log('01:' + Chamadas.find({medico: 1},{sort: {data_inicio: -1}}).fetch().length);

        Retirada.update(id, {count: newPass});
        Chamadas.insert(
            {senha: newPass, status : 'E', data_inicio: new Date(), medico: 1});

        console.log('02:' + Chamadas.find({medico: 1},{sort: {data_inicio: -1}}).fetch().length);

        setTimeout (teste, 1000);

        function teste(){
            atualizarChamadas();
        }
    }
     });

console.log, , chamadas , . , , .

.

+4
2
0

, , , .

Template.fila.helpers({
    chamadasAtendimento: function() {
        //return Session.get("chamadas");
        return Chamadas.find({medico: 1},{sort: {data_inicio: -1}}).fetch().filter((el)=>{
            return el.status == 'A';
        }).slice(0,11);
      }
});

Template.fila.helpers({
    chamadasEspera: function() {
        return Chamadas.find({medico: 1},{sort: {data_inicio: -1}}).fetch().filter((el)=>{
            return el.status == 'E';
        }).slice(0, 11);
      }
});

Template.fila.helpers({
    chamadasFinalizada: function() { 
        return Chamadas.find({medico: 1},{sort: {data_inicio: -1}}).fetch().filter((el)=>{
            return el.status == 'F';
        }).slice(0, 11);
      }
});
0

Source: https://habr.com/ru/post/1671400/


All Articles