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)  
Старый 28.07.2021, 23:40
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,605

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

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

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

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

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

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

Сообщение от voraa
Мне кажется, что бы это сработало, должно быть быть обращение к серверу с методом DELETE
Все верно.
Ответить с цитированием
  #7 (permalink)  
Старый 29.07.2021, 12:31
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,605

Сообщение от Konstantin47
готово
Нет. Вы просто весь пост туда засунули? Это так не работает. Код это то что у вас в листингах находится, причем в первом листинге у вас код JS, а во втором код HTML. У каждого кода свой бьютифайер: Beautify JavaScript и Beautify HTML. Остальной текст поста не является кодом. Вы разве не видите что ваш код не упорядочен?
Ответить с цитированием
  #8 (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 ( по логике нет)
Ответить с цитированием
  #9 (permalink)  
Старый 30.07.2021, 06:19
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,605

Сообщение от Konstantin47
в бьютифул я вставлял только js.
То что вы сделали это не форматирование кода.

Сообщение от Konstantin47
html я вообще не трогал.
Почему? Это тоже надо.

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

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

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

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

Последний раз редактировалось Rise, 30.07.2021 в 06:27.
Ответить с цитированием
  #10 (permalink)  
Старый 30.07.2021, 19:41
Аспирант
Отправить личное сообщение для Konstantin47 Посмотреть профиль Найти все сообщения от Konstantin47
 
Регистрация: 12.01.2021
Сообщений: 32

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



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

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


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