/ / Mongoose Db: Jak mogę użyć sparametryzowanej metody w zapytaniu Mongoose? - mongodb, mangusta

Mongoose Db: Jak mogę użyć sparametryzowanej metody w zapytaniu Mongoose? - mongodb, mangusta

var mongoose = require("mongoose"),
Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;

var Group = new Schema({
name: { type: String, required: true },
members: [{ type: ObjectId, ref: "User" }],
leader: { type: ObjectId, ref: "User" },
// more fields to filter by
});


Group.method("role", function (user) {
if (this.leader === user) return "Leader";
else if (this.members.indexOf(user) >= 0) return "Member";
else return "Non-Member";
});

Jestem początkującym Mongoose i moje pierwsze prawdziwe zapytanie było trudne. Muszę wybrać zestaw grup, nazwę grupy wyświetlanej i rolę bieżącego użytkownika (identyfikator użytkownika jest przechowywany w zmiennej sesji).

Czy mogę użyć metody „rola” w zapytaniu Mongoose select?

Być może powinienem użyć niestandardowego strumienia węzłów i tam zaimplementować metodę roli?

Jestem pewien, że moje warunki (this.leader === użytkownik) lub (this.members.indexOf (użytkownik)> = 0) są poprawne lub wydajne. Muszę unikać ładowania obiektu użytkownika dla każdego dokumentu grupy.

Potrzebny przykład kodu.

Dzięki za pomoc!

Odpowiedzi:

0 dla odpowiedzi № 1

chcesz użyć struktury agregacji

http://docs.mongodb.org/manual/applications/aggregation/

Może być konieczne zanurzenie się w natywnym sterowniku dla tego zapytania.