2012-12-02 9 views
7

iniziato a giocare con Meteor di recente e sono imbattuto in un problema: ho collezione di record che sono memorizzati in MongoDB e rappresentano le prove e ogni record di prova è annidati raccolta/serie di risultati di esecuzione di test. Sul front-end sto provando a visualizzare l'elenco dei test ordinati per numero di esecuzioni di test riuscite o fallite. Quel numero non è memorizzato nel DB ed è il risultato del calcolo.Come ordinare per propery calcolato/attributo virtuale in Meteor?

Qualcuno può suggerire un'idea come implementare che nel Meteor? Non ho trovato un modo per ordinare per proprietà calcolate ed ero alla ricerca di idee su come creare una raccolta virtuale/proxy basata su una reale e visualizzare/ordinare virtuale, ma non era ancora in grado di trovare nulla.

Il vostro aiuto è molto apprezzato.

+0

http://stackoverflow.com/questions/3212919/mongo-complex-sorting – tmadsen

risposta

1

Nella mia esperienza con Meteor, quello che stai dopo è una collezione /documento trasformare. Qualche codice, che ho cercato di rendere rilevante per il tuo contesto (non testato).

Tests = new Mongo.Collection('tests', { 
    transform: function(test) { 
     test.successCount = function(){ 
      return Results.find({ testId: test._id, success: true }).count(); 
     }; 

     test.failCount = function(){ 
      return Results.find({ testId: test._id, success: false }).count(); 
     }; 

     return test; //this line is mandatory, transform must return the document 
    } 
}); 

A seconda della scala e il traffico della vostra applicazione si dovrà decidere se questa lettura, che avverrà ogni volta che viene richiesto un documento di prova è più o meno costoso di scrittura in un successo esplicito & fail contare su il documento di prova stesso.