So habe ich das folgende Layout für meine App:Cast Mongoose Dokument ähnliches Modell
UserSchema (enthält Benutzername und Passwort)
var UserSchema = new mongoose.Schema({ firstName: String, lastName: String, email: String, username: String, password: String }, options); UserSchema.plugin(passportLocalMongoose); module.exports = mongoose.model("User", UserSchema);
StudentSchema (Scheider() auf Benutzer) mit zusätzlichen Feldern
var StudentSchema = new mongoose.Schema({ indexNumber: String, courses: [{ id: { type: mongoose.Schema.Types.ObjectId, ref: "Course" }, entryDate: { type: Date, default: Date.now } }] }, options); module.exports = User.discriminator("Student", StudentSchema);
TeacherSchema (Scheider() o n Benutzer) mit zusätzlichen Feldern
var TeacherSchema = new mongoose.Schema({ degree: String, courses: [{ type: mongoose.Schema.Types.ObjectId, ref: "Course" }] }, options); module.exports = User.discriminator("Teacher", TeacherSchema);
Ich verwende Pass local-Strategie User.register().
router.post("/register", function(req,res) {
var newUser = new User({
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
username: req.body.username
});
User.register(newUser, req.body.password, function(err, user) {
if(err) throw err;
passport.authenticate("local")(req, res, function() {
req.flash("success", "Welcome " + user.username + ".");
res.redirect("/");
});
});
});
aber alles ist unter derselben Sammlung Benutzer in db (wegen Scheidern)
Wie kann ich nach einem Benutzerregister, „zu fördern“, ihn zu Schüler oder Lehrer, so kann ich diese zusätzlichen Felder in seinem Objekt?