【问题标题】:MongoDB not showing console.log while inserting document from html form LOCALLY从本地html表单插入文档时,MongoDB不显示console.log
【发布时间】:2023-03-19 21:10:02
【问题描述】:

我试图仅使用 HTML 表单将文本数据输入到 MongoDB 数据库。但是当我在 本地 运行它时,它不起作用。我认为这与创建 Node.js 服务器有关。但我不知道如何运行 HTML 文件(此处为 index.html)。我只学会了在 Node 控制台中单独运行 JavaScript 代码。我不知道如何在 NodeJS 上本地运行这个 index.html。

我也想在不使用 ExpressJS 的情况下做到这一点!我在网上找到的所有东西都只显示了如何使用 ExpressJS 来做到这一点。这背后有什么原因吗?我们不能只使用 NodeJS 和 MongoDB 来做到这一点吗? (本地在 Windows 上

var MongoClient = require("mongodb").MongoClient;
var url = "mongodb://localhost:27017";

function addData(){
    var record = document.getElementById("title").value;
    MongoClient.connect(url, function (err, db) {
        if (err) throw err;
        var dbo = db.db("notetest");
        var record2value = { title: record };
        dbo.collection("page1").insertOne(record2value, function (err, res) {
            if (err) throw err;
            console.log("1 document added!");
            db.close();
        })
    })
};

<!DOCTYPE html>
<html>
<head>
    <title>test</title>
    <script type="text/javascript" src="scripts/script.js"></script>
</head>
<body>
    <form onsubmit="addData()">
        <input type="text" name="title" id="title">
        <input type="submit" name="submit" id="submit">
    </form>
</body>
</html>

更新:我还尝试使用 Node.js 调用 index.html。通过使用以下代码。

var http = require('http');
var fs = require('fs');

const PORT=8080; 

fs.readFile('./index.html', function (err, html) {

    if (err) throw err;    

    http.createServer(function(request, response) {  
        response.writeHeader(200, {"Content-Type": "text/html"});  
        response.write(html);  
        response.end();  
    }).listen(PORT);
});

但我不知道为什么我没有看到来自 MongoDB 的 console.log,它应该说“添加了 1 个文档!”。

【问题讨论】:

    标签: javascript html node.js mongodb forms


    【解决方案1】:

    每个地方都在使用 ExpressJS 来解决这个问题,因为我们需要一个 Web 服务器,它可以监听来自网络(本地或互联网)的调用并使其在服务器端易于理解。您自己运行了http 服务器,但您需要处理来自客户端网络的请求。由于您的目的,我们也需要快递。 Express 还使用 http 库来创建 Web 服务器,因此您无需担心所有这些东西。我不知道您对 express 的问题,但我建议使用 express 及其推荐的方法来解决此问题。


    更新

    本主题将帮助您仅使用 Node.js 创建 Web 服务器: Node.js server that accepts POST requests

    创建一个名为server.js 的文件并使用上述答案创建http 服务器,然后使用node app.js 命令从终端运行它。 (确保您的终端在正确的目录中)

    将您的数据库相关代码放在接受POST 方法下的请求的部分中。

    然后为您的 HTML 页面创建一个 javascript 文件,并使用&lt;script src=""&gt;... 链接它,并简单地使用fetch API 向您刚刚运行的 http 服务器发送请求。阅读fetchhere

    【讨论】:

    • 嗨,你能告诉我如何使用 Node.js 处理请求吗?如果您不介意的话,我想通过仅探索没有 Express 的 NodeJS 部分来走更长的路。任何你可以引导我的资源都会非常有帮助,谢谢。
    • 哇,谢谢!我觉得这样就行了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    相关资源
    最近更新 更多