recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment transmettre efficacement les données JSON du champ jsonb PostgreSQL vers Javascript ?

Je recherche une solution intelligente pour traiter certaines données JSON d'une base de données postgresql en utilisant Javascript. Je sais que je dois lire la base de données via php et transmettre les données sous forme de tableau à Javascript.

Habituellement, vous feriez quelque chose comme ceci :

<?php
$phpArray = array('apple', 'banana', 'orange');
$jsonString = json_encode($phpArray);
?>

<script>
var jsonString = '<?php echo $jsonString ?>';
var jsArray = JSON.parse(jsonString);
</script>

Mais mes données sont déjà stockées dans le champ jsonb postgresql au format JSON. J'espère donc qu'il existe un moyen de transmettre le tableau plus efficacement afin que le PC n'ait pas à répéter deux fois les mêmes données.

root@monitor:~ $ sudo -u postgres psql
postgres=# \c monitor
monitor=# SELECT * FROM "drone001";

id |                                             data
---+-----------------------------------------------------------------------------------------------
 1 | {"RX": 13.7, "Speed": 10.1, "Azimuth": 897, "Heading": 125, "DateTime": "2023-03-19 04:14:49"}
 2 | {"RX": 13.4, "Speed": 10.2, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:47"}
 3 | {"RX": 13.3, "Speed": 10.1, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:45"}
 4 | {"RX": 13.7, "Speed": 10.1, "Azimuth": 896, "Heading": 127, "DateTime": "2023-03-19 04:14:43"}
 5 | {"RX": 13.1, "Speed": 10.1, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:41"}
[...]

Ce code ne fonctionne pas mais devrait montrer à peu près ce que j'ai en tête.

<?php
  require_once 'pgsql.php';

  $db = new database();
  $res = $db->select('drone001');
  $jsondata = array();
  while ($ds = pg_fetch_object($res)) {
    $jsondata[] = $ds->data;
  }
?>


<script type="text/javascript">
  var jsArray = JSON.parse('<?php echo $jsondata ?>');
  console.log(jsArray);
</script>

Ce serait formidable si quelqu'un pouvait m'orienter dans la bonne direction.

P粉596161915P粉596161915457 Il y a quelques jours626

répondre à tous(1)je répondrai

  • P粉744831602

    P粉7448316022023-09-13 10:07:37

    D'accord, je me sens un peu idiot aujourd'hui. J'ai trouvé la solution, pas besoin de créer un nouveau tableau, il suffit de concaténer toutes les chaînes ensemble.

    <?php
      require_once 'pgsql.php';
    
      $db = new database();
      $res = $db->select('drone001');
      while ($ds = pg_fetch_object($res)) {
        $jsondata .= $ds->data . ",";
      }
      $jsondata = "[" . rtrim($jsondata, ",") . "]";
    ?>
    
    <script type="text/javascript">
      var jsArray = JSON.parse('<?php echo $jsondata ?>');
      console.log(jsArray);
    </script>

    répondre
    0
  • Annulerrépondre