2016-06-14 8 views
0

Ich arbeite ein Ticket-System auf Meteor. Und ich versuche ein Dashboard mit der Anzahl der Tickets pro Status (# Open, # In Progress und # Closed) zu erstellen. Allerdings muss ich es pro Rolle [Client und Administrator] herausfiltern. Screenshot: http://screencast.com/t/1IteIss0So filtern Sie eine Liste pro Sitzung auf Meteor.js

Nehmen wir ein Beispiel sagen:

  • Ich bin Kunde und ich sollte nur Tickets sehen, die ich geschaffen habe.

  • Und ich bin ein Administrator, aber ich muss in der Lage sein, alle Tickets für alle Clients erstellt zu sehen.

Dann habe ich den folgenden Code erstellt. Allerdings möchte ich Ihre Hilfe, wie ich die Tickets pro Rolle filtern kann.

Client Site 

Template.dashboard.onCreated(function(){ 
    this.subscribe('getStatus'); 
}); 

Template.dashboard.helpers({ 
    tickets: function() { 
    return Status.find({}); 
} 
}); 

Server Site 

Meteor.publish("getStatus", function(args) { 
var sub = this; 

var db = MongoInternals.defaultRemoteCollectionDriver().mongo.db; 

var pipeline = [ 
    { "$group": { 
     "_id": "$status", 
     "count": { "$sum": 1} 
    }} 
]; 

db.collection("Tickets").aggregate(  
    pipeline, 
    // Need to wrap the callback so it gets called in a Fiber. 
    Meteor.bindEnvironment(
     function(err, result) { 
      // Add each of the results to the subscription. 
      _.each(result, function(e) { 
       // Generate a random disposable id for aggregated documents 
       sub.added("Status", Random.id(), { 
        "Status": e._id, 
        "value": e.count 
       }); 
      }); 
      sub.ready(); 
     }, 
     function(error) { 
      Meteor._debug("Error doing aggregation: " + error); 
     } 
    ) 
); 
}); 

Ich schätze wirklich alle Ihre Hilfe zu diesem Thema.

Wenn Sie Fragen haben, lassen Sie es mich wissen.

Antwort

0

Es sollte auf Publikationsebene erfolgen. Sie können es überprüfen, Benutzer-ID und von How to get Meteor.user() to return on the server side? dort verwendet, ist auch Paket Rolle, die Sie hilfreiche Ideen https://github.com/alanning/meteor-roles

+0

Vielen Dank für Ihre Hilfe hat, ich bin mit Rollen. Kann ich aber die Methode getStatus serverseitig pro Rolle filtern? wo die Aggregatfunktion wie erwartet funktionieren kann. – Gova

+0

Gova, was ist das Problem? Wenn Sie wissen, welche Art von Rolle der Benutzer manipulieren kann Filter auf Mongo-Abfragen – Kamil

+0

Vielen Dank für Ihre Hilfe. Und ich würde gerne wissen, wie kann ich dann Filter auf Mongo pro Rolle manipulieren? Hast du ein Beispiel? In diesem Fall möchte ich zwei Pipeline eine für Client und die andere für Administrator erstellen – Gova

Verwandte Themen