【问题标题】:Update a property in mongodb collection using ejs and node.js使用 ejs 和 node.js 更新 mongodb 集合中的属性
【发布时间】:2020-05-11 02:26:51
【问题描述】:

一个使用 node.js 服务器、mongodb 和 ejs 的初学者,我正在尝试创建一个成员模式。我在更新或向已创建集合的字段中添加值时遇到困难。在“/”路由中,名称和电子邮件字段的值被添加到新成员,在被重定向到“/page1”路由后,我希望用户添加另一个值,我将附加到该特定成员。我安==

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}
});
});

下面是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"); -%>

出于测试目的,该集合之前已清空,因此只有一个成员需要处理

【问题讨论】:

  • 在 app.post("/page1" ...

标签: node.js mongodb mongoose ejs


【解决方案1】:
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");
})

【讨论】:

    猜你喜欢
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2017-12-06
    • 2019-12-01
    • 1970-01-01
    • 2021-05-11
    • 2012-03-14
    相关资源
    最近更新 更多