HTML-ввод возвращает неопределенный с экспресс - PullRequest
0 голосов
/ 06 декабря 2018

Итак, я учусь, как делать Node.js с Mysql впервые.В настоящее время я следую этому уроку (https://hackernoon.com/setting-up-node-js-with-a-database-part-1-3f2461bdd77f)) и застрял в точке (до заголовка 'Настройка Knex'), где я запускаю узел и когда пользователь вводит свое имя пользователя и пароль на входе.В учебном пособии говорится, что он должен console.log вернуть имя пользователя и пароль пользователя, но вместо этого я получаю неопределенное значение.

Server running on http://localhost:7555
Add user undefined with password undefined

Я пытаюсь посмотреть, как решить эту проблему, но у меня не получается получить свою работуЯ не совсем уверен, если это экспресс или HTML, который может показаться устаревшим. Это то, что у меня есть сейчас.

index.html

<!DOCTYPE html>
<html>
<head>
    <title>Node Database Tutorial</title>
</head>
<body>
    <h1>Create a new user</h1>
    <form action="/CreateUser", method="post">
        <input type="text" class="username" placeholder="username">
        <input type="password" class="password" placeholder="password">
        <input type="submit" value="Create user">
    </form>
    <script src="/app.js"><script>
</body>
</html>

app.js

const CreateUser = document.querySelector('.CreateUser')
CreateUser.addEventListener('submit', (e) => {
    e.preventDefault()
    const username = CreateUser.querySelector('.username').value
    const password = CreateUser.querySelector('.password').value
    post('/createUser', { username, password })
})

function post(path, data){
    return window.fetch(path, {
        method: 'POST',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(data)
    })
}

index.js

const express = require('express')
const bodyParser = require('body-parser')
const store = require('./store')
const app = express()
app.use(express.static('public'))
app.use(bodyParser.urlencoded({extended:false}))
app.use(bodyParser.json())
var jsonParser = bodyParser.json()
var urlencodedParser = bodyParser.urlencoded({extended: false})
app.post('/createUser', urlencodedParser, function(req, res){
        if (!req.body) return res.sendStatus(400)
        store.createUser({
          username: req.body.username,
          password: req.body.password
        })
        .then(() => res.sendStatus(200))
})

app.listen(7555, () => {
    console.log('Server running on http://localhost:7555')
})

Пожалуйста, помогите, я застрял на несколько дней.

edit: здесь находится мой console.log (store.js)

module.exports = {
  createUser({ usern-ame, password }) {
    console.log(`Add user ${username} with password ${password}`)
    return Promise.resolve()
  }
}

1 Ответ

0 голосов
/ 06 декабря 2018

В вашей форме нет class='CreateUser' в вашем теге <form>.Добавьте туда класс.

Также в вашем app.post нет console.log

В store.js синтаксически неверно, должно быть:

module.exports = {
  createUser: function({ username, password }) {
    console.log(`Add user ${username} with password ${password}`)
    return Promise.resolve()
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...