mongoose.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // Connects to MongoDB using the mongoose driver
  2. // Handles related routes
  3. const helper = require('../helper');
  4. const Mongoose = require('mongoose');
  5. Mongoose.connect('mongodb://tfb-database/hello_world', { useNewUrlParser: true, useUnifiedTopology: true });
  6. const WorldSchema = new Mongoose.Schema({
  7. id: Number,
  8. randomNumber: Number
  9. }, {
  10. collection: 'world'
  11. });
  12. const FortuneSchema = new Mongoose.Schema({
  13. id: Number,
  14. message: String
  15. }, {
  16. collection: 'fortune'
  17. });
  18. const Worlds = Mongoose.model('world', WorldSchema);
  19. const Fortunes = Mongoose.model('fortune', FortuneSchema);
  20. const randomWorld = () => Worlds.findOne({ id: helper.randomTfbNumber() });
  21. const updateWorld = async (world) =>
  22. await Worlds.updateOne(
  23. { id: world.randomNumber },
  24. { randomNumber: world.randomNumber }
  25. );
  26. module.exports = {
  27. SingleQuery: async (request, h) => {
  28. return h.response(await randomWorld()).header('Server', 'hapi');
  29. },
  30. MultipleQueries: async (request, h) => {
  31. const queries = helper.getQueries(request);
  32. const results = [];
  33. for (let i = 0; i < queries; i++) {
  34. results.push(await randomWorld());
  35. }
  36. return h.response(results).header('Server', 'hapi');
  37. },
  38. Fortunes: async (request, h) => {
  39. const fortunes = await Fortunes.find();
  40. fortunes.push(helper.additionalFortune());
  41. fortunes.sort((a, b) => a.message.localeCompare(b.message));
  42. return h.view('fortunes', {
  43. fortunes: fortunes
  44. })
  45. .header('Content-Type', 'text/html')
  46. .header('Server', 'hapi');
  47. },
  48. Updates: async (request, h) => {
  49. const queries = helper.getQueries(request);
  50. const results = [];
  51. for (let i = 0; i < queries; i++) {
  52. const world = await randomWorld();
  53. world.randomNumber = helper.randomTfbNumber();
  54. await updateWorld(world);
  55. results.push(world);
  56. }
  57. return h.response(results)
  58. .header('Content-Type', 'application/json')
  59. .header('Server', 'hapi');
  60. }
  61. };