我是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路由中。
我正在尝试创建一种情况,当将新文档添加到数组中时,它将删除数组中的第一项,因此数组永远不会超过预定义的数字。
如果您有任何疑问,请告诉我。
感谢您的帮助!