[英]Update a property in mongodb collection using ejs and node.js
A beginner with node.js servers, mongodb and ejs, I am trying to create a member schema.作为 node.js 服务器、mongodb 和 ejs 的初学者,我正在尝试创建一个成员架构。 I'm having difficulty updating or adding values to fields of a collection already created.我在更新或向已创建集合的字段添加值时遇到困难。 In the "/" route the values for name and email fields are added to a new member, after being redirected to "/page1" route i want the user to add another value which i will appended to that particular member.在“/”路由中,名称和电子邮件字段的值被添加到新成员,在被重定向到“/page1”路由后,我希望用户添加另一个值,我将附加到该特定成员。 I ann==我安==
const express = require("express");
const bodyParser = require("body-parser");
const ejs = require("ejs");
const mongoose = require("mongoose");
const app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(express.static("public"));
mongoose.connect("mongodb://localhost:27017/membersDB", {
useNewUrlParser: true,
useUnifiedTopology: true
});
const memberSchema = {
name: String,
email: String,
theme: String,
guests: String
};
const Member = mongoose.model("Member", memberSchema);
app.get("/", function(req, res) {
Member.deleteMany({}, function(err, members){
if (err) {
console.log("Unsuccessfully removed collection.");
} else {
console.log("Collection successfully removed.");
res.render("home");
}
});
});
app.post("/home", function(req, res) {
const member = new Member({
name: req.body.memberName,
email: req.body.memberEmail
});
member.save(function(err) {
if (!err) {
console.log("Member saved successfully.", member.name);
res.redirect("page1");
} else {
console.log("Request unsuccessful.");
}
});
});
app.get("/page1", function(req, res) {
Member.find({}, function (err, members){
res.render("page1", {
members: members
});
})
});
app.post("/page1", function(req, res) {
Member.updateOne({},{$set: {"theme": req.body.style}
});
});
Below is the page1.ejs code下面是 page1.ejs 代码
<%- include ("partials/header"); -%>
<div class="section">
<% members.forEach(function(member) { %>
<h1>Welcome, <%= member.name %></h1>
<% }); %>
<h1>For Family or Friends?</h1>
<form class="" action="/page1" method="post">
<div class="form-group">
<button class="form-control" type="submit" value="style">Family</button>
<button class="form-control" type="submit" value="style">Friends</button>
</div>
</form>
</div>
<%- include ("partials/footer"); -%>
For test purposes the collection is emptied before so there is only one member to deal with出于测试目的,集合之前已清空,因此只有一个成员要处理
under this const Member = mongoose.model("Member", memberSchema);
var object = new Member({name:"Arjun",email:"something@some.com",theme:"asdgjh",guests:"guest"});
Then a new row will be added to the member collection
=================================================================
In the EJS file
<div class="container p-4 border border-primary">
<form action="/created" class="form-group" method="post">
<label for="title">Title</label>
<input class="form-control" name="name" type="text" placeholder="name" id="title">
<label for="title">email</label>
<input class="form-control" name="email" type="email" placeholder="email" id="title">
<label for="title">Theme</label>
<input class="form-control" name="theme" type="email" placeholder="email" id="title">
<label for="title">guest</label>
<input class="form-control" name="guest" type="text" placeholder="email" id="title">
<button class="btn btn-success" type="submit">Create post</button>
</form>
</div>
================================================================================
Then in the javascript file
app.post("/created",(req,res)=>{
var name = req.body.name;
var email = req.body.email;
var theme = req.body.theme;
var guest = req.body.theme;
obj.create({name:name, email:email, theme:theme, guest:guest});
res.render("your_ejs_page");
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.