Тело Node.js не анализируется - PullRequest
0 голосов
/ 20 апреля 2019

Когда я пытаюсь отправить некоторые данные в мою базу данных через экспресс-сервер, тело не анализируется.

Я попытался использовать express.json () и после этого не работал, я вернулся к bodyParser.json (). Ничего из этого не помогло, поэтому я вышел в Интернет Я уже 2 часа смотрю видео, читаю статьи и ищу переполнение стека, но не могу найти решение.

Клиентская сторона (response.js):

fetch('http://localhost:7000/users', {
   method: 'POST',
   header: {
      'Content-Type': 'application/json',
      'Accept': 'application/json'
   },
   body: JSON.stringify({
      username: username,
      password: password
   })
});

Серверная часть (node.js с экспрессом):

const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const http = require('http');

const app = express();

app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

const index = require('./routes/index');
const users = require('./routes/users');

app.use('/', index);
app.use('/users', users);

const server = http.Server(app);
const port = 7000;

server.listen(port, () => {
    console.log('Listening on port ' + port);
});

(Причина, по которой я использую http-сервер вместо app.listen, заключается в том, что я собираюсь добавить socket.io. Не уверен, что это важно)

перенаправляет / users.js:

const express = require('express');
const router = express.Router();
const mongo = require('mongojs');
const dbuser = SENSITIVE_INFO;
const dbpass = SENSITIVE_INFO;
const db = mongo('mongodb://'+dbuser+':'+dbpass+'@ds157574.mlab.com:57574/chat-app-1__saahilkhatkhate', ['users']);

router.get('/', (req, res, next) => {
    db.users.find((err, users) => {
        if (err) {
            res.send(err);
        }
        res.json(users);
    });
});

router.post('/', (req, res, next) => {
    var body = req.body;
    var data = {
        name: body.username,
        password: body.password
    };

    console.log(body);
    console.log(data);

    // db.users.save(data, (err, user) => {
    //     if (err) {
    //         res.send(err);
    //     }
    //     res.json(user);
    // });
});

module.exports = router;

На стороне клиента я записал в журнал то, что отправлял на сервер, и в результате получил:

{ "имя пользователя": "TestUser", "пароль": "testPass"}

На стороне сервера я записал в журнал, что я получал, и результат был:

{}

{имя: не определено, пароль: не определено}

Пожалуйста, дайте мне знать, если я просто тупой и упускаю что-то простое, или есть что-то, что я должен добавить или изменить.

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 20 апреля 2019

Это просто опечатка, я думаю.Это должны быть «заголовки» вместо «заголовок».

fetch('http://localhost:7000/users', {
 method: 'POST',
 headers: {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
 },
 body: JSON.stringify({
  username: username,
  password: password
 })
});
...