Сделайте так, чтобы данные сохранялись в форме с помощью узла mongodb express - PullRequest
0 голосов
/ 18 марта 2019

Привет, я могу подключиться к mongodb и сохранить его с помощью mlab, но я не могу получить данные в форме, чтобы они сохранялись при обновлении. Форма принимает пользовательский ввод из поля ввода.

Любая помощь будет великолепна.

Спасибо

1 Ответ

0 голосов
/ 19 марта 2019

Если вам нужно получить одинаковые данные формы для всех запросов (независимо от того, откуда они сделаны), то возможный обходной путь может быть следующим:

1) Сохраните исходные данные формы (возможно, пустые) в базе данных, получите ObjectId и жестко закодируйте его в своем коде, таким образом, все обновления будут сделаны только для этого конкретного документа MongoDB.

2) Маршрут формы (ниже единицы) ничего не должен делать, кроме как для обслуживания файла, который имеет форму

app.get('/form1', function (req, res) {
    res.sendFile(__dirname + '/public');
//record.find({"_id": ObjectId("MLAB ID")})......dont do this


});

3) Должен быть другой маршрут, который отправляет данные формы

app.get('/getdata', function(req, res) {
        record.find({"_id": ObjectId("MLAB ID")}, function(err, doc) {
            res.send(doc)
        })
    });

4) Статический файл, который вы отправляете клиенту, должен иметь функцию javascript, которая запрашивает данные формы, как только загружается ваше окно, а затем устанавливает значение элементов ввода из полученных данных:

 window.onload = function() {
        //make a GET request to /getdata to get form data....store it in obj
        //then set the input values
       document.getElementById("yourchoice").value = obj.yourchoice;
        //and set the value of other input fields ....in similar amnner

    }

5) Запрос POST, который вы делаете, должен обновить этот конкретный документ (findOneAndUpdate ??)

Недостаток этого метода:

Для одной операции мы запрашиваем файл с сервера, а затем другой запрос для получения данных формы, поэтому два запроса для одной операции, так как мы не можем использовать оба res.sendFile () и res.json () вместе ... в одну сторону Чтобы обойти это, нужно скрыть данные формы в HTML-документе, используя шаблонизатор. Больше об этом можно легко найти. В любом случае вышеупомянутый метод решает вашу цель.

Надеюсь, я правильно понял формулировку проблемы.

Удачного кодирования !!

Редактировать: Хотя вышеупомянутые пункты являются пояснительными, я написал примерный фрагмент по адресу: https://pastebin.com/AvgVyx7b

Отлично работает

...