[forest] 🌳🌳🌳 Unexpected error: Converting circular structure to JSON

I can’t access the summary-view of collection “places” [copropriétés]

Failure Logs

[forest] 🌳🌳🌳  Unexpected error: Converting circular structure to JSON
    --> starting at object with constructor 'TLSSocket'
    |     property '_httpMessage' -> object with constructor 'ClientRequest'
    --- property 'socket' closes the circle
TypeError: Converting circular structure to JSON
    --> starting at object with constructor 'TLSSocket'
    |     property '_httpMessage' -> object with constructor 'ClientRequest'
    --- property 'socket' closes the circle
    at JSON.stringify (<anonymous>)
    at Printf.template (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\forest-express-sequelize\node_modules\forest-express\dist\services\logger.js:33:37)
    at Printf.transform (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\logform\printf.js:11:26)
    at Format.transform (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\logform\combine.js:20:24)
    at Console._write (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\winston-transport\index.js:91:33)
    at doWrite (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\winston-transport\node_modules\readable-stream\lib\_stream_writable.js:428:64)
    at writeOrBuffer (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\winston-transport\node_modules\readable-stream\lib\_stream_writable.js:417:5)
    at Console.Writable.write (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\winston-transport\node_modules\readable-stream\lib\_stream_writable.js:334:11)
    at DerivedLogger.ondata (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:681:20)
    at DerivedLogger.emit (node:events:526:28)
    at addChunk (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:298:12)
    at readableAddChunk (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:280:11)
    at DerivedLogger.Readable.push (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:241:10)
    at DerivedLogger.Transform.push (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_transform.js:139:32)
    at DerivedLogger._transform (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\winston\lib\winston\logger.js:305:12)
    at readableAddChunk (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:280:11)
    at DerivedLogger.Readable.push (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:241:10)
    at DerivedLogger.Transform.push (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_transform.js:139:32)
    at readableAddChunk (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:280:11)
    at DerivedLogger.Readable.push (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:241:10)
    at readableAddChunk (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:280:11)
    at readableAddChunk (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:280:11)
    at readableAddChunk (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:280:11)
    at readableAddChunk (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:280:11)
    at readableAddChunk (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:280:11)
    at readableAddChunk (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:280:11)
    at readableAddChunk (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:280:11)
    at DerivedLogger.Readable.push (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_readable.js:241:10)
    at DerivedLogger.Transform.push (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_transform.js:139:32)
    at DerivedLogger._transform (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\winston\lib\winston\logger.js:305:12)
    at DerivedLogger.Transform._read (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_transform.js:177:10)
    at DerivedLogger.Transform._write (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_transform.js:164:83)
    at doWrite (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_writable.js:409:139)
    at writeOrBuffer (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_writable.js:398:5)
    at DerivedLogger.Writable.write (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\readable-stream\lib\_stream_writable.js:307:11)
    at DerivedLogger.log (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\winston\lib\winston\logger.js:244:14)
    at DerivedLogger.<computed> [as warn] (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\winston\lib\winston\create-logger.js:95:19)
    at C:\DEV\git\sergic\syndic-one-rebirth\node_modules\forest-express-sequelize\node_modules\forest-express\dist\services\smart-fields-values-injector.js:72:16
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
From previous event:
    at processImmediate (node:internal/timers:466:21)
From previous event:
    at SmartFieldsValuesInjector.perform (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\forest-express-sequelize\node_modules\forest-express\dist\services\smart-fields-values-injector.js:80:14)
    at C:\DEV\git\sergic\syndic-one-rebirth\node_modules\forest-express-sequelize\node_modules\forest-express\dist\serializers\resource.js:185:83
From previous event:
    at ResourceSerializer.perform (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\forest-express-sequelize\node_modules\forest-express\dist\serializers\resource.js:172:12)
    at RecordGetter.serialize (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\forest-express-sequelize\node_modules\forest-express\dist\services\exposed\abstract-records-service.js:42:162)
    at C:\DEV\git\sergic\syndic-one-rebirth\routes\places.js:199:27
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
GET /forest/places/1685?timezone=Europe%2FParis 500 256 - 3105.028 ms

Context

Project name: .Sergic
Team name: gestion
Environment name: Développement
Agent (forest package) name & version: 9
Database type: Postgres
Recent changes made on your end if any: any changes

Hello,
Could you provide more context please?
Alban


// Get a Place
router.get('/places/:recordId', permissionMiddlewareCreator.details(), (request, response, next) => {
  // Learn what this route does here: https://docs.forestadmin.com/documentation/v/v6/reference-guide/routes/default-routes#get-a-record
  if (request.params.recordId === 'count') {
    return next();
  }
 // const { params } = request;
  const { query, user } = request;
  const recordGetter = new RecordGetter(models.places, user, query);
  recordGetter.get(request.params.recordId)
  //recordGetter.get(params.recordId)
    .then(async record => {
      /*const downloadCoownership = axios.put(`${API_URL}/forest_admin/places/${params.recordId}/download_coownership_register`, null, {
        headers: {
          'Authorization': `Bearer ${process.env.ACCESS_TOKEN}`,
          'X-CURRENT-USER-EMAIL': process.env.SERVICE_EMAIL
        },
      });*/

      // models.managementMandates.findAll({
      //   where: { place_id: request.params.recordId }
      // }).then(managementMandates => {
      //   const today = moment();
      //   const currentMandate = managementMandates.find(managementMandate => moment(managementMandate.startDate) < today && moment(managementMandate.endDate) >= today);

      //   record['Date de debut de mandat de syndic'] = currentMandate ? currentMandate.startDate : null;
      //   record['Date de fin de mandat previsionnel'] = currentMandate ? currentMandate.endDate : null;
      //   record['Honoraires annuels TTC'] = currentMandate ? currentMandate.annualFees : null;
        
      // });

      
      // models.propertyRepresentatives.findOne({
      //   where: { place_id: request.params.recordId },
      //   order: [['created_at', 'DESC']],
      // }).then(propertyRepresentative => {
      //   record['nom du mandataire'] =  propertyRepresentative ? propertyRepresentative.fullName : '';
      //   record['date de nomination'] = propertyRepresentative ? propertyRepresentative.nominationDate : null;
      //   record['date fin de mission mandataire'] = propertyRepresentative ? propertyRepresentative.missionEndsAt : null;
      // });



      const sageVotedEstimatedBudgets = axios.get(`${API_URL}/forest_admin/places/${request.params.recordId}/sage_voted_estimated_budgets`, {
        headers: {
          'Authorization': `Bearer ${process.env.ACCESS_TOKEN}`,
          'X-CURRENT-USER-EMAIL': process.env.SERVICE_EMAIL
        }
      });

      const sagePlaceBalance = axios.get(`${API_URL}/forest_admin/places/${request.params.recordId}/sage_place_balance`, {
        headers: {
          'Authorization': `Bearer ${process.env.ACCESS_TOKEN}`,
          'X-CURRENT-USER-EMAIL': process.env.SERVICE_EMAIL
        }
      });

      const sageFiscalYearBudgets = axios.get(`${API_URL}/forest_admin/places/${request.params.recordId}/sage_fiscal_year_budgets`, {
        headers: {
          'Authorization': `Bearer ${process.env.ACCESS_TOKEN}`,
          'X-CURRENT-USER-EMAIL': process.env.SERVICE_EMAIL
        }
      });

      // const visites = axios.get(`${URL}/places/${request.params.recordId}`, {
      //   headers: {
      //     'Authorization': `Bearer ${process.env.ACCESS_TOKEN}`,
      //     'X-CURRENT-USER-EMAIL': process.env.SERVICE_EMAIL
      //   }
      // });

      const result = await Promise.allSettled([sageVotedEstimatedBudgets, sagePlaceBalance, sageFiscalYearBudgets, /*visites*//*downloadCoownership*/]);

      //record.ficheSynthetique = result[3]?.value?.data?.ficheSynthetique;
      //record.attestation = result[3]?.value?.data?.attestation;
      record['fond de travaux disponible'] = result[0]?.value?.data?.prevoyance;
      record['avance de tresorerie'] = result[0]?.value?.data?.avance_tresorerie;
      record['tresorerie actuelle'] = result[1]?.value?.data?.soldes.find(solde => solde.libelle === 'Trésorerie')?.solde;
      record['total factures a payer'] = result[1]?.value?.data?.soldes.find(solde => solde.libelle === 'Facture à payer')?.solde;
      record['fonds prevoyance'] = result[1]?.value?.data.soldes.find(solde => solde.libelle === 'Epargne prévoyance')?.solde;
      record['soldes copro'] = result[1]?.value?.data.soldes.find(solde => solde.libelle === 'Soldes copropriétaires')?.solde;
      // console.log("🚀 ~ router.get ~ result[1]?.value?.data.soldes.find(solde => solde.libelle === 'Soldes copropriétaires')?.solde:", result[1]?.value?.data.soldes.find(solde => solde.libelle === 'Soldes copropriétaires')?.solde)

      record['depenses'] = result[2]?.value?.data?.exercices.find(p => p.en_cours)?.montant_consomme;
      record['budget vote'] = result[2]?.value?.data?.exercices.find(p => p.en_cours)?.montant_vote;

     // record['status'] = result[3]?.value?.data?.status;
  ( Line: 199)   return recordGetter.serialize(record);
    })
    .then(recordSerialized => response.send(recordSerialized))
    .catch(next);
});

Logs :
From previous event:

    at ResourceSerializer.perform (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\forest-express-sequelize\node_modules\forest-express\dist\serializers\resource.js:172:12)
    at RecordGetter.serialize (C:\DEV\git\sergic\syndic-one-rebirth\node_modules\forest-express-sequelize\node_modules\forest-express\dist\services\exposed\abstract-records-service.js:42:162)   
    at C:\DEV\git\sergic\syndic-one-rebirth\routes\places.js:199:27

Hello,
What do you want to do?
Alban