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

**URL:** <https://community.forestadmin.com/t/forest-unexpected-error-converting-circular-structure-to-json/7677>\
**Category:** Help me!\
**Created:** [December 2, 2024, 3:19pm UTC](https://community.forestadmin.com/t/forest-unexpected-error-converting-circular-structure-to-json/7677 "2024-12-02T15:19:51Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Soufiane](https://avatars.discourse-cdn.com/v4/letter/s/8edcca/32.png) [@Soufiane](https://community.forestadmin.com/u/Soufiane)\
**Post date:** [December 2, 2024, 3:19pm UTC](https://community.forestadmin.com/t/forest-unexpected-error-converting-circular-structure-to-json/7677/1 "2024-12-02T15:19:51Z")

</div>

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

## Failure Logs

```javascript
[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

---

<div class="post-metadata">

**Author:** ![Alban\_Bertolini](https://dub1.discourse-cdn.com/flex013/user_avatar/community.forestadmin.com/alban_bertolini/32/1077_2.png) [@Alban\_Bertolini](https://community.forestadmin.com/u/Alban_Bertolini)\
**Post date:** [December 2, 2024, 4:08pm UTC](https://community.forestadmin.com/t/forest-unexpected-error-converting-circular-structure-to-json/7677/2 "2024-12-02T16:08:03Z")

</div>

Hello,  
Could you provide more context please?  
Alban

---

<div class="post-metadata">

**Author:** ![Soufiane](https://avatars.discourse-cdn.com/v4/letter/s/8edcca/32.png) [@Soufiane](https://community.forestadmin.com/u/Soufiane)\
**Post date:** [December 2, 2024, 4:16pm UTC](https://community.forestadmin.com/t/forest-unexpected-error-converting-circular-structure-to-json/7677/3 "2024-12-02T16:16:39Z")

</div>

```javascript

// 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:

```javascript
    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

```

---

<div class="post-metadata">

**Author:** ![Alban\_Bertolini](https://dub1.discourse-cdn.com/flex013/user_avatar/community.forestadmin.com/alban_bertolini/32/1077_2.png) [@Alban\_Bertolini](https://community.forestadmin.com/u/Alban_Bertolini)\
**Post date:** [December 4, 2024, 10:03am UTC](https://community.forestadmin.com/t/forest-unexpected-error-converting-circular-structure-to-json/7677/4 "2024-12-04T10:03:44Z")

</div>

Hello,  
What do you want to do?  
Alban
