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";
});
Аз съм монгоуз нов и първата ми истинска заявка е сложна. Трябва да избера набор от групи за име на дисплейната група и ролята на текущия потребител (user_id се съхранява в променливата на сесията).
Мога ли да използвам метода "роля" в заявката за избор на Mongoose?
Може би трябва да използвам персонализиран поток от възли и да приложим метода за роля там?
Забележете, че моите условия (this.leader === потребител) или (this.members.indexOf (user)> = 0) са правилни или ефективни. Трябва да избягвам зареждането на потребителския обект за всеки документ на групата.
Необходим е код.
Благодаря за вашата помощ!
Отговори:
0 за отговор № 1това, което искате да използвате, е рамката за агрегиране
http://docs.mongodb.org/manual/applications/aggregation/
Може да се наложи да потапяте в родния драйвер за тази заявка.