test3.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // Test Observable //
  2. import mongoose, { Model } from "mongoose";
  3. import { Subject, map } from "rxjs";
  4. const used = process.memoryUsage();
  5. let MongooseConnection: mongoose.Connection
  6. let connectionStatus = 0
  7. let mongoStorage: any = {
  8. type: `MongoDB`,
  9. url: `mongodb://192.168.100.59:27017/fromEnzo`
  10. }
  11. let data: any[] = []
  12. // Conect to designated storage destination
  13. async function connectMongo(storage: Storage) {
  14. return new Promise((resolve, reject) => {
  15. try {
  16. console.log(`Connecting to ${storage.url}`)
  17. MongooseConnection = mongoose.createConnection(storage.url)
  18. connectionStatus = 1
  19. resolve(connectionStatus)
  20. }
  21. catch (error) {
  22. connectionStatus = 0
  23. console.error('An error occurred while connecting to the database:', error);
  24. setTimeout(() => {
  25. connectMongo(storage).then(() => {
  26. resolve(connectionStatus)
  27. })
  28. console.log(`Reconnecting...`)
  29. }, 3000);
  30. }
  31. })
  32. }
  33. async function getMongoData(storage: Storage) {
  34. return new Promise<any>(async (resolve, reject) => {
  35. await connectMongo(storage);
  36. const Message: Model<any> = MongooseConnection.model('Message', require('../types/message.schema'));
  37. try {
  38. data = await Message.find().limit(10000)
  39. resolve(data)
  40. } catch (err) {
  41. console.error(err);
  42. }
  43. })
  44. }
  45. let testSubject: Subject<any> = new Subject()
  46. getMongoData(mongoStorage).then((data) => {
  47. data.forEach(element => {
  48. testSubject.next(element)
  49. // console.log(`Memory usage: ${used.heapUsed / 1024 / 1024} MB`);
  50. })
  51. })
  52. let count = 0
  53. testSubject.subscribe({
  54. next: (e) => {
  55. count++
  56. console.log(count)
  57. }
  58. });
  59. let pipedObs = testSubject.pipe(
  60. map((element) => {
  61. let finalResponse: any = {
  62. message: 'Piped element'
  63. }
  64. return finalResponse
  65. })
  66. )
  67. pipedObs.subscribe(element => {
  68. count ++
  69. console.log(element.message + count)
  70. })