如何将Node.js连接到MongoDB数据库
MongoDB是一个NoSQL数据库,用于存储大量的数据而不使用传统的关系数据库表。与行和列不同,MongoDB使用集合和文档来存储数据。集合由一组文档组成,文档由键值对组成,这是MongoDB中的基本数据单元。
确保MongoDB已经安装在您的电脑上。
要将Node.js应用程序连接到MongoDB,我们必须使用一个叫做 Mongoose 的库。
const mongoose = require("mongoose");
之后,我们需要调用Mongoose的connect方法
mongoose.connect("mongodb://localhost:27017/collectionName", {
useNewUrlParser: true,
useUnifiedTopology: true
});
然后我们需要定义一个模式。模式是一种结构,它提供有关数据在集合中存储方式的信息。
示例: 假设我们希望存储一个网站的联系表单的信息。
const contactSchema = {
email: String,
query: String,
};
然后,我们需要使用该模式创建一个模型,然后将数据以对象的形式存储在文档中。
const Contact = mongoose.model("Contact", contactSchema);
然后,最后,我们能够在我们的文件中存储数据。
app.post("/contact", function (req, res) {
const contact = new Contact({
email: req.body.email,
query: req.body.query,
});
contact.save(function (err) {
if (err) {
res.redirect("/error");
} else {
res.redirect("/thank-you");
}
});
});
现在让我们通过一个代码示例来理解工作原理。
Contact.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content=
"width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="/contact" method="post">
<input type="text" placeholder="Email" name="email">
<input type="text" placeholder="Query" name="query">
<button type="submit">Submit</button>
</form>
</body>
</html>
服务器文件(App.js或Index.js)
const express = require("express");
const ejs = require("ejs");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
mongoose.connect("mongodb://localhost:27017/newCollection", {
useNewUrlParser: true,
useUnifiedTopology: true
});
const contactSchema = {
email: String,
query: String,
};
const Contact = mongoose.model("Contact", contactSchema);
const app = express();
app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(express.static(__dirname + '/public'));
app.get("/contact", function(req, res){
res.render("contact");
});
app.post("/contact", function (req, res) {
console.log(req.body.email);
const contact = new Contact({
email: req.body.email,
query: req.body.query,
});
contact.save(function (err) {
if (err) {
throw err;
} else {
res.render("contact");
}
});
});
app.listen(3000, function(){
console.log("App is running on Port 3000");
});
输出: