我试图使用HTML表单将文本数据输入到MongoDB数据库。 但当我在本地运行时,它就不起作用了。 我认为这与创建Node.js服务器有关。 但是我不知道如何运行HTML文件(这里是index.HTML
)。 我只学会了在节点控制台中单独运行JavaScript代码。 我不知道如何在NodeJS上本地运行这个index.html。
另外,我想在不使用ExpressJS的情况下完成此操作! 我在网上找到的所有东西都只显示了如何使用ExpressJ来实现这一点。 背后有原因吗? 难道我们不能仅仅使用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调用这个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 document added!”。
到处都在使用ExpressJS来解决这个问题,因为我们需要一个web服务器,它可以监听来自网络(本地或internet)的调用,并使其在服务器端可以理解。 您自己运行了一个HTTP
服务器,但是您需要处理来自客户端Web的请求。 由于您的目的,我们也需要快递。 Express还使用HTTP
库来创建web服务器,因此您不需要担心所有这些东西。 我不知道您使用express的问题,但我建议使用express及其推荐的方法来解决这个问题。
本主题将帮助您创建一个只使用node.js的web服务器:node.js服务器,它接受POST请求
创建一个名为server.js
的文件,使用上面的答案创建http服务器,然后使用nodeapp.js
命令从终端运行它。 (确保您的终端位于正确的目录中)
将数据库相关代码放在POST
方法下接受请求的部分中。
然后为您的HTML页面创建一个javascript文件,并使用
链接它,然后简单地使用fetch
API来发送您刚才运行的http服务器的请求。 请在此处阅读有关fetch
的内容。