Удаление первого документа в массиве документов. мангуста - PullRequest
0 голосов
/ 29 марта 2020

Я новичок в node.js и MongoDB. Я также использую mon goose.

Вот первая часть моего кода:

const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const _ = require("lodash");

const app = express();


app.set('view engine', 'ejs');

app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static("public"));

Вот части схемы и модели моего кода:


//Items schema
const itemsSchema = new mongoose.Schema({
    name: {
        type: String
    }
});


// Model of default list
const Item = mongoose.model("Item", itemsSchema);

const item1 = new Item({
    name: "You Can"
});

const item2 = new Item({
    name: "Add Items"
});

const item3 = new Item({
    name: "To This List"
});

const defaultItems = [item1, item2, item3];





//New Items added to the list Schema
const listSchema = new mongoose.Schema({
    name: String,
    items: [itemsSchema]
});

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

app.get('/favicon.ico', (req, res) => res.status(204));




app.get("/", function(req, res) {

    Item.find({}, function(err, foundItems) {

        if (foundItems.length === 0) {
            Item.insertMany(defaultItems, function(err) {
                if (err) {
                    console.log(err);
                }
            });
            res.redirect("/");
        } else {
            res.render("list", {
                listTitle: "Today",
                newListItems: foundItems
            });
        }
    });
});


//Saving Data

app.post("/", function(req, res) {

    const itemName = req.body.newItem;
    const listName = req.body.list;

    const item = new Item({
        name: itemName
    });

    if (listName === "Today") {
        console.log(listName);
        console.log(listName);

        Item.findOneAndUpdate({ name: listName }, { $pop: { items: -1 } }, function(err, itemFound) {
            if (!err) {
                console.log(itemFound);
            }
        });

        item.save();
        res.redirect("/");
    } else {
        List.findOne({ name: listName }, function(err, foundList) {
            console.log(foundList);

            foundList.items.push(item);
            foundList.save();

            res.redirect("/" + listName);
        });
    }


});

Часть, которую я не могу заставить работать.

 Item.findOneAndUpdate({ name: listName }, { $pop: { items: -1 } }, function(err, itemFound) {
            if (!err) {
                console.log(itemFound);
            }
        });

Я просто хочу получить массив из MongoDB и удалить первый документ в массиве.

Я не уверен, если поместить его в маршрут app.post там, где он должен быть.

Я пытаюсь создать ситуацию, когда при добавлении нового документа в массив он удаляет первый элемент в массиве, поэтому массив никогда не становится больше заранее определенного числа.

Дайте мне знать, если у вас есть какие-либо вопросы.

Спасибо за вашу помощь!

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