Guest User

Untitled

a guest
Feb 16th, 2018
395
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. Users = [{
  2. _id: 1,
  3. name: "Sam",
  4. email: "sam@gmail.com",
  5. group: "Rangers"
  6. },
  7.  
  8. {
  9. _id: 2,
  10. name: "Michael",
  11. email: "michael@gmail.com"
  12. group: "Muse"
  13. },
  14.  
  15. {
  16. _id: 3,
  17. name: "John",
  18. email: "john@gmail.com"
  19. group: "Merchant"
  20. },
  21. .....
  22. ]
  23.  
  24. Items = [
  25. {
  26. _id: 1,
  27. user_id: 1,
  28. item_name: "Flying Sword",
  29. timestamp: ...
  30. },
  31. {
  32. _id: 3,
  33. user_id: 1,
  34. item_name: "Invisible Cloak",
  35. timestamp: ...
  36. },
  37.  
  38. {
  39. _id: 4,
  40. user_id: 2,
  41. item_name: "Iron Shield"
  42. },
  43.  
  44. {
  45. _id: 5,
  46. user_id: 7,
  47. item_name: "Splashing Gun",
  48. timestamp: ...
  49. },
  50. ...
  51. ]
  52.  
  53. Users.find({group: "Muse"}, function(err, users){
  54. I DON"T KNOW WHAT TO WRITE INSIDE
  55. })
  56.  
  57. [
  58. {
  59. _id: 4,
  60. name: "Jack",
  61. email: "jack@gmail.com",
  62. group: "Muse",
  63. items: [
  64. {
  65. _id: 8
  66. name: "Magic Wand",
  67. user_id: 4,
  68. timestamp: ...
  69. }
  70. {
  71. _id: 12
  72. name: "Blue Potion",
  73. user_id: 4,
  74. timestamp: ...
  75. },
  76.  
  77. {
  78. _id: 18
  79. name: "Teleportation Scroll",
  80. user_id: 4,
  81. timestamp: ...
  82. }
  83. ]
  84. }
  85. .....
  86. More USERS of similar structure
  87.  
  88.  
  89.  
  90. ]
  91.  
  92. Users.find({group: "Muse"}, function(err, users){
  93. var userIDs;
  94.  
  95. if (err) {
  96. // do error handling
  97. return;
  98. }
  99.  
  100. userIDs = users.map(function (user) { return user._id; });
  101.  
  102. Items.find({user_id: {$in: userIDs}}, function (err, items) {
  103. if (err) {
  104. // do error handling
  105. return;
  106. }
  107.  
  108. users.forEach(function (user) {
  109. user.items = items.filter(function (item) {
  110. return item.user_id === user._id;
  111. });
  112. });
  113.  
  114. // do something with modified users object
  115. });
  116. });
  117.  
  118. Users.find({group: "Muse"}).exec().then(function(users) {
  119. var userIDs = users.map(function(user) {
  120. return user._id;
  121. });
  122.  
  123. // returns a promise
  124. return Promise.all([
  125. // include users for the next `then`
  126. // avoids having to store it outside the scope of the handlers
  127. users,
  128. Items.find({
  129. user_id: {
  130. $in: userIDs
  131. }
  132. }).exec()
  133. ]);
  134. }).then(function(results) {
  135. var users = results[0];
  136. var items = results[1];
  137.  
  138. users.forEach(function(user) {
  139. user.items = items.filter(function(item) {
  140. return item.user_id === user._id;
  141. });
  142. });
  143.  
  144. return users;
  145. }).catch(function (err) {
  146. // do something with errors from either find
  147. });
  148.  
  149. Users.find({group: "Muse"}).exec().then(function(users) {
  150. return bluebird.map(users, function(user) {
  151. return Items.find({user_id: user._id}).exec().then(function (items) {
  152. user.items = items;
  153. return user;
  154. });
  155. }, {concurrency: 5});
  156. }).then(function(users) {
  157. // do something with users
  158. }).catch(function(err) {
  159. // do something with errors from either find
  160. });
Add Comment
Please, Sign In to add comment