Guest User

Untitled

a guest
Jun 23rd, 2018
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.03 KB | None | 0 0
  1. User
  2. --threads
  3. --thread_id
  4. --messages
  5. --sent
  6. --message_id
  7. --recieved
  8. --message_id
  9.  
  10. var mongoose = require("mongoose");
  11. var passportLocalMongoose = require("passport-local-mongoose");
  12. var uniqueValidator = require('mongoose-unique-validator');
  13.  
  14. var UserSchema = mongoose.Schema({
  15. username: { type: String, required: true, unique: true },
  16. password: { type: String, required: true },
  17. first_name: { type: String, required: true },
  18. middle_initial: { type: String, required: true },
  19. last_name: { type: String, required: true },
  20. phone: { type: Number, required: true },
  21. address: { type: String, required: true },
  22. email: { type: String, required: true, unique: true },
  23. isManager: Boolean,
  24. isSysAdmin: Boolean,
  25. points_accrued: Number,
  26. threads: [
  27. {
  28. type: mongoose.Schema.Types.ObjectId,
  29. ref: "Thread"
  30. }
  31. ],
  32. messages: {
  33. sent: [{
  34. type: mongoose.Schema.Types.ObjectId,
  35. ref: "Message"
  36. }],
  37. recieved: [{
  38. type: mongoose.Schema.Types.ObjectId,
  39. ref: "Message"
  40. }],
  41. },
  42. id: {
  43. type: mongoose.Schema.Types.ObjectId,
  44. ref: "User"
  45. }
  46. });
  47.  
  48. UserSchema.plugin(passportLocalMongoose);
  49. UserSchema.plugin(uniqueValidator);
  50.  
  51. module.exports = mongoose.model("User", UserSchema);
  52.  
  53. var mongoose = require("mongoose");
  54.  
  55. var threadSchema = mongoose.Schema({
  56. id: {
  57. type: mongoose.Schema.Types.ObjectId,
  58. ref: "Thread"
  59. },
  60. author: {
  61. id: {
  62. type: mongoose.Schema.Types.ObjectId,
  63. ref: "User"
  64. },
  65. name: { type: String, required: true }
  66. },
  67. recipient: {
  68. id: {
  69. type: mongoose.Schema.Types.ObjectId,
  70. ref: "User"
  71. },
  72. name: { type: String, required: true }
  73. },
  74. messages: [
  75. {
  76. type: mongoose.Schema.Types.ObjectId,
  77. ref: "Message"
  78. }
  79. ],
  80. subject: { type: String, required: true },
  81. date: { type: String, required: true },
  82. time: { type: String, required: true },
  83. });
  84.  
  85. module.exports = mongoose.model("Thread", threadSchema);
  86.  
  87. var mongoose = require("mongoose");
  88.  
  89. var messageSchema = mongoose.Schema({
  90. text: { type: String, required: true },
  91. subject: { type: String, required: true },
  92. date: { type: String, required: true },
  93. time: { type: String, required: true },
  94. author: {
  95. id: {
  96. type: mongoose.Schema.Types.ObjectId,
  97. ref: "User"
  98. },
  99. name: { type: String, required: true }
  100. }
  101. });
  102.  
  103. module.exports = mongoose.model("Message", messageSchema);
  104.  
  105. // Gets messages for regular Employees, not Admins
  106. router.get("/", middleware.isLoggedIn, function (req, res) {
  107. User
  108. .findById(req.user._id)
  109. .populate(/////IDK WHAT SHOULD GO HERE/////)
  110. .exec(function (err, foundUser) {
  111. if (err || !foundUser) {
  112. console.log("This is an error", err);
  113. req.flash("error", "User Not Found");
  114. res.redirect("back");
  115. } else {
  116. User.find({}, function (err, foundUsers) {
  117. if (err || !foundUsers) {
  118. console.log(err);
  119. req.flash("error", "Users Not Found");
  120. res.redirect("back");
  121. } else {
  122. res.render("users/messages", { users: foundUsers, user: foundUser });
  123. }
  124. });
  125. }
  126. });
  127. })
  128.  
  129. <hr>
  130. <%= user%>
  131. <% user.messages.recieved.forEach(function(message) {%>
  132. <p>
  133. <%= message%>
  134. <%= message.text%>
  135. </p>
  136. <% }); %>
  137.  
  138. .populate("messages") //DIDNT WORK
  139.  
  140.  
  141. .populate({
  142. path: "messages",
  143. select: "sent recieved"
  144. }) //DIDNT WORK
  145.  
  146.  
  147. .populate({
  148. path: "messages",
  149. select: "sent recieved",
  150. populate: {
  151. path: "sent",
  152. model: "Message",
  153. select: "text subject ect..."
  154. }
  155. }) //DIDNT WORK
Add Comment
Please, Sign In to add comment