обучение экспресс, и по какой-то причине мое тело запроса равно NULL для обоих параметров
мой полный файл для index.js:
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
const port = 3000
const db = require('./queries')
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
extended: true
}));
app.get('/',(request, response) => {
response.json({info: 'express and postgresapi'})
})
app.post('/users', db.createUser)
app.listen(port, () => {
console.info(`App running on port ${port}.`)
})
и мой файл запросов, где я делаю POST
const Pool = require('pg').Pool
const pool = new Pool({
user: 'postgres',
host: 'localhost',
database: 'chatDb',
password: 'password1',
port: 5432,
})
const createUser = (request, response) => {
const { name, email } = request.body
console.info(request.query);
pool.query('INSERT INTO users (name, email) VALUES ($1, $2)', [name, email], (error, results) => {
if (error) {
console.info(request.body)
throw error
}
response.status(201).send(`User added with ID: ${results.insertId}`)
})
}
так что это на самом деле сообщение, но когда я смотрю на строки в моей базе данных, они похожи на
ID name email
20 NULL NULL
мой локон curl --data "name=Elaine&[email protected]" http://локальный:3000/пользователи
также результат console.info(request.query); является {}
Эй, вам нужно передать объект, если вы используете почтальона
{
"name":"your name here",
"email":"email that you want"
}
Надеюсь это поможет
const createUser = (request, response) => {
const { name, email } = request.query;
pool.query('INSERT INTO users (name, email) VALUES ($1, $2)', [name, email], (error, results) => {
if (error) {
console.info(request.body)
throw error
}
response.status(201).send(`User added with ID: ${results.insertId}`)
})
const createUser = (request, response) => {
const { name, email } = request.body;
pool.query('INSERT INTO users (name, email) VALUES ($1, $2)', [name, email], (error, results) => {
if (error) {
console.info(request.body)
throw error
}
response.status(201).send(`User added with ID: ${results.insertId}`)
})
** вы можете открыть свой почтальон, и вы получите две опции Params и Body Options. Если вы выберете Body, отправьте тело запроса в формате urlencode или json, потому что вы добавили body-parser -
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
extended: true
}));
вау, я действительно чувствую себя глупо. Я использую insomnia в качестве средства проверки API, и это по-разному интерполирует завитки, проблема не в коде, а в клиенте. сделал это в теле, и это сработало, я идиот, ха-ха, спасибо!