Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1. const mongoose = require("mongoose")
  2. const { ObjectId } = mongoose.Schema
  3. const passportLocalMongoose = require("passport-local-mongoose")
  4. const mongodbErrorHandler = require("mongoose-mongodb-errors")
  5.  
  6. const userSchema = new mongoose.Schema({
  7. email: {
  8. type: String,
  9. required: "Email is required",
  10. unique: true
  11. },
  12. name: {
  13. type: String,
  14. required: "Name is required",
  15. minlength: 4,
  16. maxlength: 10,
  17. unique: true
  18. },
  19. avatar: {
  20. type: String,
  21. default: "/static/images/profile-image.png"
  22. },
  23. about: String,
  24. following: [{type: ObjectId,ref: "user"}],
  25. followers: [{type: ObjectId,ref: "user"}],
  26. },
  27. // auto createAt vs updateAt field
  28. {timestamps: true}
  29. )
  30.  
  31.  
  32. const autoPopulateFollowingAndFollowers = function(next){
  33. this.populate("following" , "_id name user");
  34. this.populate("followers" , "_id name user");
  35. next();
  36. }
  37.  
  38. userSchema.pre("findOne" , autoPopulateFollowingAndFollowers)
  39.  
  40. userSchema.plugin(passportLocalMongoose, { usernameField: "email" });
  41. userSchema.plugin(mongodbErrorHandler);
  42.  
  43. module.exports = User = mongoose.model("user", userSchema)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement