Показать сообщение отдельно
  #1 (permalink)  
Старый 15.06.2021, 13:32
Аспирант
Отправить личное сообщение для Konstantin47 Посмотреть профиль Найти все сообщения от Konstantin47
 
Регистрация: 12.01.2021
Сообщений: 32

post read write JSON
Здравствуйте!
Можете подсказать, выдает ошибку - TypeError: weather.push is not a function
at C:\Users\PC\server.js:36:21

- проблема в JSON файле?

вначале была ошибка SyntaxError: Unexpected token c in JSON at position 1 at JSON.parse ()
http://127.0.0.1:8081/favicon.ico («default-src»).

отправил в валидатор, исправил и появиласт ошибка, что это не функция.
Задача была - данные ввожу в HTMl форме. Записываю их в JSON. Потом считываю и могу изменить

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var fs = require('fs');
  const path = require('path');

 
 
 
// Create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })
 
app.use(express.static('public'));
app.get('/index.html', function (req, res) {
   res.sendFile( __dirname + "/" + "index.html" );
     
})

 

app.post('/process_post', urlencodedParser, (req, res) => {

            // należy utworzyć nowy obiekt
            const newWeather = {
                location: req.body.location,
                temperature: req.body.temperature,
                humidity: req.body.humidity,
                pressure: req.body.pressure
            };

            // pobrać aktualne dane z pogodą
            const weather = JSON.parse(fs.readFileSync("weather.json"));

            // dodać do nich nową pogodę
            weather.push(newWeather);

            // i napisać zapisać dane do pliku
            fs.writeFileSync("weather.json", JSON.stringify(weather));
});


app.delete('/process_delete', function (req, res) {
   console.log("Got a DELETE request for /del");
   res.send('<h1>DELETE</h1>');
   

})
 
 
var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   
   console.log("Example app listening at //%s:%s", host, port)
 
})


<body>   
      
    <center>  <form action = "//127.0.0.1:8081/process_get" method = "GET"> 
	<br>
       Location: <input type = "text" name = "Lokalizację">  <br>
		 <br>
		 <br>
            
		 
		temperature: temperaturę w st. C
<input type="number" name="temperaturę">  C<br><br>

humidity: wilgotność powietrza w %
<input type="number" name="wilgotność" >  %<br><br>
pressure: ciśnienie w hPa
<input type="number" name="ciśnienie" >  hPa<br><br>

<br>
 <input type = "submit" value = "GET">
      </form>
	  
	  
	   <center>  <form action = "//127.0.0.1:8081/process_post" method = "POST">
       Location: <input type = "text" name = "Lokalizację">  <br>
		 <br>
		 <br>
            
		 
		temperature: temperaturę w st. C
<input type=" text" name="temperaturę">  C<br><br>

humidity: wilgotność powietrza w %
<input type="text" name="wilgotność" >  %<br><br>
pressure: ciśnienie w hPa
<input type="text" name="ciśnienie" >  hPa<br><br>

<br>
 <input type = "submit" value = "POST">
      </form>
	  
	    <center>  <form action = "//127.0.0.1:8081/" method = "DELETE">
       Location: <input type = "text" name = "Lokalizację">  <br>
		 <br>
		 <br>
            
		 
		temperature: temperaturę w st. C
<input type="number" name="temperaturę">  C<br><br>

humidity: wilgotność powietrza w %
<input type="number" name="wilgotność" >  %<br><br>
pressure: ciśnienie w hPa
<input type="number" name="ciśnienie" >  hPa<br><br>

<br>
 <input type = "submit" value = "DELETE">
      </form>
      
      
   </body>


так я оформил weather.JSON

{
"location": "req.body.location",
"temperature": "req.body.temperature",
"humidity": "req.body.humidity",
"pressure": "req.body.pressure"
}


ps все работало кроме записи и чтения в JSON,
c cамим файлом JSON cовсем не уверен, пробовал по разному его оформить

CПАСИБО ЗА КОММЕНТАРИИ
Ответить с цитированием