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.
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
Gova, was ist das Problem? Wenn Sie wissen, welche Art von Rolle der Benutzer manipulieren kann Filter auf Mongo-Abfragen – Kamil
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