簡體   English   中英

無法使用Node.js將表單數據發送到MongoDB數據庫

[英]Unable to send form data into MongoDB database using Node.js

因此,我一直在嘗試從表單中獲取數據,並將其輸入到數據庫中已有很長時間了,但它一直無法正常工作。 沒有錯誤,沒有任何日志記錄。

這是我的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()語句被執行。

承諾可能在調用注冊處理程序之前解析。

請嘗試以下操作:

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)
});

具體來看您的問題,您沒有在表單中使用任何action

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

因此它不會發布到您的路線。 (這就是為什么我特別詢問在dbconn之前是否進行控制台日志記錄的原因)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM