Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.07.2021, 22:32
Аспирант
Отправить личное сообщение для Konstantin47 Посмотреть профиль Найти все сообщения от Konstantin47
 
Регистрация: 12.01.2021
Сообщений: 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 проблема моя с удалением пост


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

Последний раз редактировалось Konstantin47, 01.08.2021 в 02:17.
Ответить с цитированием
  #2 (permalink)  
Старый 29.07.2021, 01:12
Аспирант
Отправить личное сообщение для Konstantin47 Посмотреть профиль Найти все сообщения от Konstantin47
 
Регистрация: 12.01.2021
Сообщений: 32

Сообщение от Rise Посмотреть сообщение
Konstantin47, отформатируй код, удали пустые строки и посторонние символы (красные точки), это не сложно.
готово
Ответить с цитированием
  #3 (permalink)  
Старый 29.07.2021, 08:08
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от Konstantin47
weather.remove
Пример из книжки?
Меня там удивило использование этого метода. Такого вроде нет в массиве.
Сообщение от Konstantin47
var id = req.param("id");
Если верить POST - добавление происходит в простой массив...
А потом как-то пытаются удаление делать по _id...

Да и сам возврат из delete() довольно странный. Т.е. не понятно как вообще доберутся до перезаписи самого "обновленного" файла.
Сообщение от Konstantin47
const weather = JSON.parse(fs.readFileSync("weather.json"));
Посмотри чего там тебе возвращают...
Ответить с цитированием
  #4 (permalink)  
Старый 29.07.2021, 10:13
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,744

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

Мне кажется, что бы это сработало, должно быть быть обращение к серверу с методом DELETE. А у вас все формы с method GET или POST
Ответить с цитированием
  #5 (permalink)  
Старый 29.07.2021, 11:24
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от voraa
Мне кажется, что бы это сработало, должно быть быть обращение к серверу с методом DELETE
Все верно.
Ответить с цитированием
  #6 (permalink)  
Старый 30.07.2021, 02:29
Аспирант
Отправить личное сообщение для Konstantin47 Посмотреть профиль Найти все сообщения от Konstantin47
 
Регистрация: 12.01.2021
Сообщений: 32

в бьютифул я вставлял только js. html я вообще не трогал. убрал пробелы и все. я не знаю, что еще не упорядочено. кроме кода просто вопросы
1. весь delete просто, как пример кода был. Фильтр да, с учебника, так он мне и пригодится. Но все ж уперлось в. как form cоединить с этим всем. Если я не понимаю, что задать в форме html , какой метод
и, как выводить это на button. будет ли работать, как get и post
2. я не понимаю, должно ли в input показывать данные с прочитанного json в delete ( по логике нет)
Ответить с цитированием
  #7 (permalink)  
Старый 30.07.2021, 19:41
Аспирант
Отправить личное сообщение для Konstantin47 Посмотреть профиль Найти все сообщения от Konstantin47
 
Регистрация: 12.01.2021
Сообщений: 32

Я наоборот за, чтобы код был читаем и за форматирование. в html не было красных точек и я просто поудалял пробелы. так и с js пробелы поудалял и красные точки и все, я о другом и не знал. сейчас переделаю
Ответить с цитированием
  #8 (permalink)  
Старый 30.07.2021, 23:41
Аспирант
Отправить личное сообщение для Konstantin47 Посмотреть профиль Найти все сообщения от Konstantin47
 
Регистрация: 12.01.2021
Сообщений: 32

Сообщение от Rise Посмотреть сообщение
Konstantin47, если вы будете противоречить себе так, то сложно будет вам помочь:


VS
Естественно я html файл загрузил и посмотрел на наличие красных точек. Пробелы тоже удалил. Но раз не было точек - значит не трогал.
ps мне вообще стыдно, что я не знал об этом , я бы назвал стандартизаторе "красивый код", о валидаторе знал.
Поэтому я и не нажимал там ничего, только точки удалил.
ps2 мне абсолютно не лень, что надо поправить, исправить, привести в порядок, чтобы донести нормально, просто нужен был образец, а так ну гост, стандартизация.

Я все сделал по инструкции, сейчас должно быть форматировано и ошибки исправил
Ответить с цитированием
  #9 (permalink)  
Старый 31.07.2021, 19:19
Аспирант
Отправить личное сообщение для Konstantin47 Посмотреть профиль Найти все сообщения от Konstantin47
 
Регистрация: 12.01.2021
Сообщений: 32

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

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

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

Посмотри чего там тебе возвращают...
Post - да, именно простой массив. id и Delete через id это я отдельно стал думать. Чтобы, чем-то зацепиться за элемент
Ответить с цитированием
  #10 (permalink)  
Старый 31.07.2021, 21:26
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,744

Увы.
В HTML в form у атрибута method значения могут быть только GET или POST. Любое другое рассматривается как GET.

HTML Living Standard — Last Updated 30 July 2021
https://html.spec.whatwg.org/multipa...attr-fs-method

Значит надо либо обращаться к серверу через AJAX (fetch) - там DELETE можно использовать.
Либо обращаться с методом POST, а на сервере ловить нужный path (/process_delete)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос про text и enter Lansaid Events/DOM/Window 8 26.02.2013 19:54
еще один вопрос про кнопки и события f0rzik Общие вопросы Javascript 15 19.01.2013 23:19
Вопрос про change vitaly63 Общие вопросы Javascript 1 24.12.2012 10:50
Глупый вопрос про if then. Irish.Tippler Общие вопросы Javascript 9 26.07.2012 12:32
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06