2012-12-02 14 views
7

Ich habe kürzlich mit Meteor gespielt und bin auf ein Problem gestoßen: Ich habe eine Sammlung von Datensätzen, die in MongoDB gespeichert sind und Tests repräsentieren, und jeder Testdatensatz hat eine geschachtelte Sammlung/ein Array von Testausführungsergebnissen. Am Front-End versuche ich eine Liste der Tests nach der Anzahl der erfolgreichen oder fehlgeschlagenen Testausführungen anzuzeigen. Diese Nummer wird nicht im DB gespeichert und ist das Ergebnis der Berechnung.Wie sortiere ich nach berechnetem Property/virtuellem Attribut in Meteor?

Kann jemand eine Idee vorschlagen, wie man das in Meteor umsetzt? Ich habe keine Möglichkeit gefunden, nach berechneten Eigenschaften zu sortieren, und suchte nach Ideen, wie man virtuelle/Proxy-Sammlungen erstellen kann, die auf echten basieren und virtuell darstellen/sortieren, aber noch nichts finden konnten.

Ihre Hilfe wird sehr geschätzt.

+0

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

Antwort

1

Nach meiner Erfahrung mit Meteor, was Sie suchen, ist eine Sammlung/Dokument zu transformieren. Irgendein Code, den ich versucht habe, für deinen Kontext relevant zu machen (nicht getestet).

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 
    } 
}); 

Je nach Umfang und Verkehr Ihrer Anwendung müssen Sie entscheiden, ob diese Zeilen lesen, die jedes Mal, wenn ein Testdokument angefordert auftreten werden, sind mehr oder weniger teuer dann zu einem expliziten Erfolg zu schreiben & fail rechnen das Testdokument selbst.

Verwandte Themen