Нужна помощь для бодипарсера - PullRequest
0 голосов
/ 13 июля 2020

Итак, я пытаюсь получить доступ к данным из моего интерфейса с помощью bodyparser, но мне не удается заставить его работать. Вот мой код:

app.post("/deletetodo", (req, res) => {
    createNewTodo.findOne({ "usersID": req.body.accountName, "todo": req.body.delete_todo }, (err, todo) => {
        if(err) console.log(err);

        if(todo) {
            todo.remove();
            res.redirect("/api/user")
        } else {
            console.log(req.body.delete_todo + " " + req.body.accountName)
            res.redirect("/api/user")

        }
    }) 
    console.log(req.body)
})

По какой-то причине я получаю значение req.body.delete_todo, но не значение req.body.accountName, которое возвращает undefined . И я знаю, что это не вопрос синтаксической ошибки, потому что я немного использую req.body.accountName в других почтовых запросах с точно таким же синтаксисом на той же странице в том же файле.

EDIT: Я пытаюсь чтобы получить доступ к имени задачи, на которую нажимает пользователь, и имени его / ее учетной записи, чтобы найти их в моей базе данных mongoDB, а затем удалить это задание. Я получаю значение, по которому выполняется щелчок по todo, но, как уже упоминалось, не имя пользователя клиента (req.body.accountName).

Вот мой код внешнего интерфейса:

<nav class="todo-nav">
    <span class="logo">Todoish</span>
    <span class="account">Logged in as <b>{{ accountStuff }}</b> | <a class="logout-btn" href="http://localhost:8000/api/user/logout">Logout</a></span>
</nav>
<form action="http://localhost:8000/addtodo" class="create-todo-form" method="POST">
    <p class="signupMsg">{{ todoErrMsg }}</p>
    <input type="text" placeholder="Todo..." class="todo-input" name="todo" required>
    <input type="text" style="display:none;" name="accountName" value="{{accountStuff}}">
    <input type="submit" value="Add" class="submit">
</form>
<div class="list-of-todos">
    {{#each todos}}
        <div class="todo">
            <span>{{this}}</span>
            <form class="todo-btn-form" method="POST">
            <input type="text" style="display:none;" name="accountName" value=" 
            {{accountStuff}}">
                <button value="{{this}}" class="edit-btn">Edit</button>
                <button value="{{this}}" name="delete_todo" method="POST" formaction="http://localhost:8000/deletetodo" class="delete-btn">Delete</button>
            </form>
        </div>
    {{/each}}
</div>

1 Ответ

0 голосов
/ 14 июля 2020

Мне удалось это исправить. По-видимому, я не мог использовать accountStuff внутри моего foreach l oop, содержащего мои задачи, отправленные с бэкэнда. Вместо этого мне пришлось поместить ввод accountStuff за пределы моего foreach, но по-прежнему внутри моей формы.

<div class="list-of-todos">
    <form action="http://localhost:8000/deletetodo" class="todo-btn-form" method="POST">
        <input type="text" style="display:none;" name="usersName" value={{accountStuff}}> //This input had to be outside of the #each loop but still in form 
        {{#each todos}}
            <div class="todo">
                <span>{{this}}</span>
                <button value="{{this}}" class="edit-btn">Edit</button>
                <button value="{{this}}" name="delete_todo" method="POST" class="delete-btn">Delete</button>
            </div>
         {{/each}}
    </form>
</div>
...