首页 > 解决方案 > 从本地html表单插入文档时,MongoDB不显示console.log

问题描述

我试图仅使用 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);
});

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

标签: javascripthtmlnode.jsmongodbforms

解决方案


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


更新

本主题将帮助您仅使用 Node.js 创建 Web 服务器: 接受 POST 请求的 Node.js 服务器

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

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

然后为您的 HTML 页面创建一个 javascript 文件并将其链接到您所知道的<script src="">...并简单地使用fetchAPI 来发送您刚刚运行的 http 服务器的请求。fetch 在这里阅读。


推荐阅读