Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   вопрос про Delete b form (https://javascript.ru/forum/node-js-io-js/82893-vopros-pro-delete-b-form.html)

Konstantin47 28.07.2021 22:32

вопрос про Delete b form
 
форматировал, можно вернуться к теме delete
переделал, сделал запросы GET, POST ( читало и записывало в Json)

код, который работает


var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var fs = require('fs');
const path = require('path');
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(express.static(__dirname + '/public'));
app.post('/process_post', (req, res) => {
    // należy utworzyć nowy obiek
    const newWeather = {
        id: 1,
        location: req.body.location,
        id: 2,
        temperature: req.body.temperature,
        id: 3,
        humidity: req.body.humidity,
        id: 4,
        pressure: req.body.pressure
    };
    console.log(req.body)
    // читаем актуальные данные
    const weather = JSON.parse(fs.readFileSync("weather.json"));
    // dodać do nich nową pogodę
    weather.push(newWeather);
    // записать изменения
    fs.writeFileSync("weather.json", JSON.stringify(weather));
    res.json(newWeather);
});
app.get('/process_get', ​function(req, res) {
    const records = JSON.parse(fs.readFileSync("weather.json"));
    const weather = JSON.parse(fs.readFileSync("weather.json"));
    res.json(weather);
});
// не работает
app.delete('/delete/:id', function(req, res) {
    const weather = JSON.parse(fs.readFileSync("weather.json"));
    var id = req.param("id");
    weather.remove({
        _id: id
    }, function(err) {
        if (err) {
            console.log(err)
        } else {
            return res.send("Removed");
        }
    });
    fs.writeFileSync("weather.json", JSON.stringify(weather));
    res.json(newWeather);
});

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)
        }

<!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
</head>

<body>

    <form action="//127.0.0.1:8081/process_get" method="GET">
        <br>
        Location: <input type="text" name="location"> <br> <br><br>
        temperature: temperaturę w st. C
        <input type="text" name="temperature"> C<br><br>
        humidity: wilgotność powietrza w %
        <input type="text" name="humidity"> %<br><br>
        pressure: ciśnienie w hPa
        <input type="text" name="pressure"> hPa<br><br>
        <br>
        <input type="submit" value="GET">
    </form>

    <form action="//127.0.0.1:8081/process_post" method="POST">
        Location: <input type="text" name="location"> <br> <br> <br>
        temperature: temperaturę w st. C
        <input type="text" name="temperature"> C<br><br>
        humidity: wilgotność powietrza w %
        <input type="text" name="humidity"> %<br><br>
        pressure: ciśnienie w hPa
        <input type="text" name="pressure"> hPa<br><br>
        <input type="submit" value="POST">
    </form>
    <br>

    <form action="//127.0.0.1:8081/process_delete" method="DELETE">
        Location: <input type="text" id="1" name="location"><br><br>
        temperature: <input type="text" id="2" name="temperature"><br><br>
        humidity: <input type="text" id="3" name="humidity"><br><br>
        pressure: <input type="text" id="4" name="pressure"><br><br>
        <input type="submit" value="DELETE"><br>
    </form>
</body>

</html>


Html
вопрос, метод post или все таки delete
В форме же input не должно ж ничего появляться? что мол, файл json прочитан, input же пустой по идее будет
отдельно вынес id, чтобы удалять этот массив.
и еще вопрос, в самом удаление html button точно также управляется, как и в пост , гет?
да я ссоздал файл json cпустым массивом и данные с пост в него нормально записываются и показываются в браузере
Гет тоже нормально все показывает
ps проблема моя с удалением пост


Спасибо
Редактировать/удалить сообщение

Rise 28.07.2021 23:40

Konstantin47, отформатируй код, удали пустые строки и посторонние символы (красные точки), это не сложно.

Konstantin47 29.07.2021 01:12

Цитата:

Сообщение от Rise (Сообщение 539009)
Konstantin47, отформатируй код, удали пустые строки и посторонние символы (красные точки), это не сложно.

готово

ksa 29.07.2021 08:08

Цитата:

Сообщение от Konstantin47
weather.remove

Пример из книжки?
Меня там удивило использование этого метода. Такого вроде нет в массиве.
Цитата:

Сообщение от Konstantin47
var id = req.param("id");

Если верить POST - добавление происходит в простой массив...
А потом как-то пытаются удаление делать по _id...

Да и сам возврат из delete() довольно странный. Т.е. не понятно как вообще доберутся до перезаписи самого "обновленного" файла.
Цитата:

Сообщение от Konstantin47
const weather = JSON.parse(fs.readFileSync("weather.json"));

Посмотри чего там тебе возвращают...

voraa 29.07.2021 10:13

app.delete('/delete/:id', function(req, res) {

Мне кажется, что бы это сработало, должно быть быть обращение к серверу с методом DELETE. А у вас все формы с method GET или POST

ksa 29.07.2021 11:24

Цитата:

Сообщение от voraa
Мне кажется, что бы это сработало, должно быть быть обращение к серверу с методом DELETE

Все верно. :yes:

Rise 29.07.2021 12:31

Цитата:

Сообщение от Konstantin47
готово

Нет. Вы просто весь пост туда засунули? Это так не работает. Код это то что у вас в листингах находится, причем в первом листинге у вас код JS, а во втором код HTML. У каждого кода свой бьютифайер: Beautify JavaScript и Beautify HTML. Остальной текст поста не является кодом. Вы разве не видите что ваш код не упорядочен?

Konstantin47 30.07.2021 02:29

в бьютифул я вставлял только js. html я вообще не трогал. убрал пробелы и все. я не знаю, что еще не упорядочено. кроме кода просто вопросы
1. весь delete просто, как пример кода был. Фильтр да, с учебника, так он мне и пригодится. Но все ж уперлось в. как form cоединить с этим всем. Если я не понимаю, что задать в форме html , какой метод
и, как выводить это на button. будет ли работать, как get и post
2. я не понимаю, должно ли в input показывать данные с прочитанного json в delete ( по логике нет)

Rise 30.07.2021 06:19

Цитата:

Сообщение от Konstantin47
в бьютифул я вставлял только js.

То что вы сделали это не форматирование кода.

Цитата:

Сообщение от Konstantin47
html я вообще не трогал.

Почему? Это тоже надо.

Цитата:

Сообщение от Konstantin47
убрал пробелы и все.

То что вы выровняли всё по одной линии это не форматирование, а скорее наоборот.

Цитата:

Сообщение от Konstantin47
я не знаю, что еще не упорядочено.

Форматирование нужно не для красоты или моей прихоти, а чтобы ваш код был читаем. Сейчас ваш код не читаем! То что вам так не кажется, не значит что это нормально. Вы как не программист этого не ощущаете, поэтому я вам говорю об этом. Всё что от вас требуется это открыть сайт beautifier.io, выбрать Beautify JavaScript, взять ваш код JS, вставить, нажать Beautify Code, перенести сюда, затем выбрать Beautify HTML, взять ваш код HTML, вставить, нажать Beautify Code, перенести сюда. Всё. Потом проверить ваш код HTML через валидатор, так как у вас в нем много ошибок, исправить их.

А потом уже про вопросы думать. Но если для вас это слишком трудно или вам лень, то и не стоит тогда за программирование браться вообще, потому что это самое элементарное что придется делать всегда.

PS: код из поста можно копировать (без цифр строк) через иконки что появляются при наведении.

Konstantin47 30.07.2021 19:41

Я наоборот за, чтобы код был читаем и за форматирование. в html не было красных точек и я просто поудалял пробелы. так и с js пробелы поудалял и красные точки и все, я о другом и не знал. сейчас переделаю


Часовой пояс GMT +3, время: 23:43.