Ложная информация добавлена ​​на сервер mongoDB - PullRequest
0 голосов
/ 04 апреля 2020

Я делаю приложение todo, используя e js, mongoDB с mon goose. В этом приложении пользователь может создать собственный список задач, определив маршрут, например: localhost: 3000 / work. Итак, рабочий список создан. Этот список должен быть отправлен в мою базу данных, которая содержит listName (здесь работают) и listItems (все, что вводится пользователем). Однако ложное значение 'favicon ico' появляется всякий раз, когда пользователь получает доступ к пользовательскому списку. Вот приложение. js:

//jshint esversion:6

const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require('mongoose');
const _ = require('lodash');
const date = require(__dirname + "/date.js");

const app = express();

app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static("public"));

mongoose.connect("mongodb://localhost:27017/todolistDB", { useNewUrlParser: true, useUnifiedTopology: true });

const itemSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  }
});

const listSchema = new mongoose.Schema({
  listName: {
    type: String,
    required: true
  },
  listItems: [itemSchema]
});

const TodoItem = new mongoose.model("TodoItem", itemSchema);
const List = new mongoose.model("List", listSchema);

const item_1 = new TodoItem({
  name: 'Welcom to your TodoList'
});


const item_2 = new TodoItem({
  name: 'Hit + button to add your Todo'
});

const item_3 = new TodoItem({
  name: '<-- Press this to delete your Item'
});


app.get("/", function (req, res) {
  const day = date.getDate();
  TodoItem.find({}, function (err, foundItems) {
    if (err) {
      console.log(err);
    } else {
      res.render("list", { listTitle: day, newListItems: foundItems });
    }
  })
});

app.get('/:category', function (req, res) {
  const category = _.lowerCase(req.params.category);
  console.log(category);
  List.findOne({ listName: category }, function (err, foundItems) {
    if (!err) {
      if (!foundItems) {
        // create a list
        const list = new List({
          listName: category,
          listItems: [item_1, item_2,item_3]
        })
        list.save();
        res.redirect('/' + category);
        // res.render('list', {listTitle: _.capitalize(foundItems.listName), newListItems: foundItems.listItems });
      } else {
        //show exsisting list
        res.render('list', { listTitle: _.capitalize(foundItems.listName), newListItems: foundItems.listItems });
      }
    }
  });

});

app.post('/', function (req, res) {
  const category = _.lowerCase(req.body.list);
  const item = req.body.newItem;
  console.log(category);
  var coutomListItem = new TodoItem({
    name: item
  })

  List.findOne({ listName: category }, function (err, foundItems) {
    if (!err) {
      if (!foundItems) {
        coutomListItem.save();
        res.redirect('/');
      } else {
        foundItems.listItems.push(coutomListItem);
        foundItems.save();
        res.redirect('/' + category);
      }
    }
  });
});

app.get("/about", function (req, res) {
  res.render("about");
});

app.post('/delete/:listTitle', function (req, res) {
  const checkedItemId = req.body.checkbox;
  var listPage = _.lowerCase(req.body.listTitle);
  console.log(listPage);  
  var allListArr = []
  List.find({},function(err,docs){
    if(!err){
      allListArr.push(docs)
    }
  });
  console.log(allListArr);  
  var flag = 1;
  for(var i=0;i<allListArr.length;i++){
    if(listPage == allListArr[i]){
      flag=0;
      break;
    }
  }
  console.log(flag);

  if (listPage!=0) {
    //or use this. It does not matter.
    TodoItem.deleteOne({ _id: checkedItemId }, function (err) {
      if (!err)
        console.log('sucess');
    });
    res.redirect('/');
  } else {
    //either we can use this
    List.findOneAndUpdate({ listName: listPage }, { $pull: { listItems: { _id: checkedItemId } } }, function (err, foundItems) {
      if (!err) {
        console.log(foundItems);
        res.redirect('/' + listPage);
      }
    });
  }
});



[enter image description here][1]
app.listen(3000, function () {
  console.log("Server started on port 3000");
});

Вот журнал, который я получаю при доступе к списку кустом в гипере: Вот база данных mongoDB: введите описание изображения здесь

Кроме того, я не могу удалить задачи, когда нажимаю флажок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...