删除文档数组中的第一个文档。猫鼬

时间:2020-03-29 04:53:50

标签: node.js mongodb express mongoose

我是node.js和MongoDB的新手。我也在用猫鼬。

这是我的代码的第一部分:

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

这是我代码的Schema和Model部分:


//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路由中。

我正在尝试创建一种情况,当将新文档添加到数组中时,它将删除数组中的第一项,因此数组永远不会超过预定义的数字。

如果您有任何疑问,请告诉我。

感谢您的帮助!

0 个答案:

没有答案