Обновите свойство в коллекции mongodb, используя e js и node.js - PullRequest
0 голосов
/ 24 января 2020

Начинающий с node.js серверов, mongodb и e js, я пытаюсь создать схему участника. У меня проблемы с обновлением или добавлением значений в поля уже созданной коллекции. В маршруте "/" значения полей имени и электронной почты добавляются к новому члену, после перенаправления на маршрут "/ 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}
});
});

Ниже приведен page1.e js код

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

В целях тестирования коллекция очищается раньше, поэтому есть только один участник, с которым нужно иметь дело

...