Express app.get: req.body возвращает тип значения, а не фактическое значение

#javascript #node.js #express

#javascript #node.js #выразить

Вопрос:

Я совсем новичок в Express и работаю над проектом. У меня есть 4 переключателя, которые представляют ответ пользователя. Я сохранил правильные ответы в базе данных MongoLabs, которую я извлекаю и регистрирую в app.get() функции. Я хочу сверить ответ пользователя с этими правильными ответами. Однако, когда я захожу в систему req.body , я получаю [object Object]

index.html:

 <!DOCTYPE html>
<head>
    <title>Online Testing Website</title>
</head>
<body>
<div id="question">
    <p>This is my first question</p>
    <br>
</div>
<div id="answer">
    <form action="/answer" method="get">
        <input id="a" type="radio" name="ans" value="A" >A<br>
        <input id="b" type="radio" name="ans" value="B" >B<br>
        <input id="c" type="radio" name="ans" value="C" >C<br>
        <input id="d" type="radio" name="ans" value="D" >D<br><br><br>
        <button type="submit">Submit</button>
    </form>
</div>

<script type="text/javascript" src="./server.js"></script>    

</body>
</html>
  

server.js

 const express = require('express');
const bodyParser = require('body-parser');
const app = express();
var path = require('path');
var mongo = require('mongodb').MongoClient;

app.use(bodyParser.urlencoded({extended: true}));

var db;

app.get('/', function (req, res) {
    res.sendFile(__dirname   '/index.html');
});

mongo.connect('mongodb://deodhar:deodhar@ds015636.mlab.com:15636/correct-answers', function (err, database) {
    if(err){
        return console.log('mongo connect if: '   err);
    }
    db = database;
    app.listen(8080, function () {
        console.log("Listening on 8080");
    });
});


app.get('/answer', function (req,res) {
    console.log("User answer: "   req.body);
    var cursor = db.collection('answers').find().toArray(function (req,result) {
        console.log(result);
        res.redirect('/');
    });
});
  

Ответ №1:

С GET запросами не будет req.body ; используйте req.query вместо этого.

Кроме того, если вы хотите записать содержимое объекта в журнал, не используйте конкатенацию строк (используя ), а передайте объект в качестве отдельного аргумента console.log (используя , ):

 console.log("User answer: ", req.query);
  

Комментарии:

1. Np. Также это может быть полезно прочитать. expressjs.com/en/4x/api.html#req.query и expressjs.com/en/4x/api.html#req.body чтобы увидеть разницу.