Невозможно отправить данные формы в базу данных MongoDB с помощью Node.js - PullRequest
0 голосов
/ 28 ноября 2018

Итак, я пытался получить данные из моей формы и ввести их в свою базу данных целую вечность, и это просто не работает.Там нет ошибок и ничего не ведется.

Это мой HTML-код:

<!DOCTYPE html>
<html lang="en">
<head>
    <!-- Required meta tags -->
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta charset="UTF-8">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="css/bootstrap.min.css">

    <title>Signup for NGOs</title>
</head>
<body>
    <form class="mt-4 mr-4 ml-4" id="form" method="post">
        <div class="form-group">
            <label for="name">Name</label>
            <input type="name" class="form-control" id="name" aria-describedby="emailHelp" placeholder="Enter name of NGO">
        </div>
        <div class="form-group">
            <label for="address">Address</label>
            <input type="text" class="form-control" id="address" placeholder="Address">
        </div>
        <div class="form-group">
            <label for="phone">Contact Information</label>
            <input type="number" class="form-control" id="phone" placeholder="Contact Number">
        </div>
        <div class="form-group">
            <label for="requirements">Requirements (Seperate by Commas)</label>
            <input type="text" class="form-control" id="requirements" placeholder="Requirements">
        </div>
        <button type="submit" class="btn btn-primary" id="submitButton">Submit</button>
    </form>

    <!-- Optional JavaScript -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <script type="text/javascript" src="signup.js"></script>
</body>
</html>

А это мой код Node.js:

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

var app = express();

app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.resolve(__dirname, 'public')));

// I've replaced my original username and password with placeholders
var uri = "mongodb+srv://username:password@helpbook-rlpsi.gcp.mongodb.net/test?retryWrites=true";

var dbConn = MongoClient.connect(uri, { useNewUrlParser: true });
app.post('/signup', function (req, res) {
    dbConn.then(function(db) {
        delete req.body._id; // for safety reasons
        dbConn.db("NGOs").collections("partners").insertOne(req.body);
        console.log('test');
    });
});

Я не знаю, что происходит не так.Мои данные не загружаются в базу данных, и по какой-то причине ни один из операторов console.log () не выполняется.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Если рассматривать ваш вопрос конкретно, вы не используете action в своей форме.

<form class="mt-4 mr-4 ml-4" id="form" method="post" action="/signup">
...
</form>

Так что он не публикуется на вашем маршруте.(Вот почему я специально спросил, работает ли консоль перед тем, как работает dbconn)

0 голосов
/ 28 ноября 2018

Обещание, вероятно, разрешается до вызова обработчика регистрации.

Попробуйте выполнить следующее:

var dbConn = MongoClient.connect(uri, { useNewUrlParser: true });
dbConn.then(function(client) {
    app.post('/signup', function (req, res) {
        delete req.body._id; // for safety reasons
        client.db("NGOs").collections("partners").insertOne(req.body);
        console.log('test');
    });
})
.catch(function(err){
    console.log(err)
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...