Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.36 KB | None | 0 0
  1. const mongoose = require('mongoose')
  2.  
  3. var CardSchema = new mongoose.Schema({
  4. question: {
  5. type: String,
  6. required: true
  7. },
  8. answer: {
  9. type: String,
  10. required: true
  11. },
  12. deck: {
  13. type: mongoose.Schema.Types.ObjectId,
  14. ref: 'Deck',
  15. required: true
  16. },
  17. created_at: {
  18. type: Date,
  19. default: Date.now(),
  20. index: true
  21. },
  22. active: {
  23. type: Boolean,
  24. required: false
  25. }
  26. })
  27.  
  28. var Card = mongoose.model('Card', CardSchema)
  29.  
  30. var DeckSchema = new mongoose.Schema({
  31. name: {
  32. type: String,
  33. required: true
  34. },
  35. description: {
  36. type: String,
  37. required: false
  38. },
  39. userId: {
  40. type: String,
  41. required: true
  42. },
  43. username: {
  44. type: String
  45. },
  46. created_at: {
  47. type: Date,
  48. default: Date.now(),
  49. index: true
  50. },
  51. active: {
  52. type: Boolean,
  53. required: false
  54. }
  55. },{
  56. toObject: {
  57. virtuals: true
  58. },
  59. toJSON: {
  60. virtuals: true
  61. }
  62. })
  63.  
  64. DeckSchema.virtual('cards', {
  65. ref: 'Card',
  66. localField: '_id',
  67. foreignField: 'deck'
  68. })
  69.  
  70. var Deck = mongoose.model('Deck', DeckSchema)
  71.  
  72. module.exports = {
  73. Deck: Deck,
  74. Card: Card
  75. }
  76.  
  77. {
  78. "_id": {
  79. "$oid": "5cb6561a17055781fa83a401"
  80. },
  81. "created_at": {
  82. "$date": "2019-04-16T22:24:26.934Z"
  83. },
  84. "question": "Brunei",
  85. "answer": "Bandar Seri Begawan",
  86. "deck": {
  87. "$oid": "5ca09a141365a500179dbdd9"
  88. },
  89. "__v": 0
  90. }
  91.  
  92. {
  93. "_id": {
  94. "$oid": "5ca09a141365a500179dbdd9"
  95. },
  96. "created_at": {
  97. "$date": "2019-03-31T10:41:18.640Z"
  98. },
  99. "name": "Capitals of the World",
  100. "userId": "5c97d9147295f32991fd2606",
  101. "__v": 49
  102. }
  103.  
  104. router.get('/', checkIfTokenBelongsToUser ,(req, res) => {
  105. Deck.find({userId: req.params.userId})
  106. .populate({
  107. path: 'cards',
  108. select: 'card question',
  109. options: {
  110. sort: 'question',
  111. limit: 3,
  112. }
  113. })
  114. .exec((err, decks) => {
  115. if (err) {
  116. res.status(500).json({error: err})
  117. }
  118. else if(!decks.length) {
  119. console.log('No decks for this user')
  120. res.status(200).json(decks)
  121. }
  122. else {
  123. console.log('Fetched decks')
  124. console.log(decks.length)
  125. res.status(200).json(decks)
  126. }
  127. })
  128. })
  129.  
  130. Mongoose: decks.find({ userId: '5c97d9147295f32991fd2606' }, { projection: {} })
  131. Mongoose: cards.find({ deck: { '$in': [ ObjectId("5cb65771ca969f83411413ec"), ObjectId("5cb65f75b8237f06922308e8"), ObjectId("5cbc8cee8d5f8113e9fea60e"), ObjectId("5cbcd1fc672a8e22e486808b"), ObjectId("5cbcd229e638eb23101c5711"), ObjectId("5cbcd24284841423430719df"), ObjectId("5cbcdaae69adad2cf25a9f37"), ObjectId("5cbcdc25ee67b62ede0e5d08"), ObjectId("5cbce1402e8d1634d49df744"), ObjectId("5cbce1b308d0483574fee3b0"), ObjectId("5cbce1db8315c935b351dcb9"), ObjectId("5cbce1f96054e735e34ca461"), ObjectId("5cbce22944ba9136059f3fcc"), ObjectId("5ca09a141365a500179dbdd9"), ObjectId("5ca9c095fb968c0017c5d531"), ObjectId("5c9f8ba7d2e7d20017595dc3") ] } }, { sort: { question: 1 }, limit: 48, projection: { card: 1, question: 1, deck: 1 } })
  132.  
  133. [
  134. {
  135. "created_at": "2019-04-16T22:29:38.658Z",
  136. "_id": "5cb65771ca969f83411413ec",
  137. "name": "Countries by Continent",
  138. "userId": "5c97d9147295f32991fd2606",
  139. "__v": 0,
  140. "cards": [],
  141. "id": "5cb65771ca969f83411413ec"
  142. },
  143. {
  144. "created_at": "2019-04-16T23:04:19.542Z",
  145. "_id": "5cb65f75b8237f06922308e8",
  146. "name": "Jeopardy",
  147. "userId": "5c97d9147295f32991fd2606",
  148. "__v": 0,
  149. "cards": [
  150. {
  151. "_id": "5cb65f8de9cab80718476e8c",
  152. "question": "'"'...Why look'st thou so?'--'With my crossbow I shot the albatross'"'",
  153. "deck": "5cb65f75b8237f06922308e8"
  154. },
  155. {
  156. "_id": "5cb65f8de9cab80718476e80",
  157. "question": "'"'Do all lawyers defend n-negroes, Atticus?' 'Of course they do, Scout'"'",
  158. "deck": "5cb65f75b8237f06922308e8"
  159. },
  160. {
  161. "_id": "5cb65f8de9cab80718476eb5",
  162. "question": "'"American Idiot",<br />"Dookie"'",
  163. "deck": "5cb65f75b8237f06922308e8"
  164. }
  165. ],
  166. "id": "5cb65f75b8237f06922308e8"
  167. }
  168. ....
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement