繁体   English   中英

如何将文档从一个集合移到另一个集合? Mongoose,MongoDB

[英]How to move document from one collections to another? Mongoose, MongoDB

我有一个待办事项清单,用于存储未完成和已完成的项目。 接下来,我有一些按钮,一个用于删除项目(它起作用),第二个用于检查或取消选中该项目是否完成。

我不知道如何编写一个函数来复制和删除数组A中的项目并将其放入数组B中。

这是我的架构以及如何渲染数组:

var todoSchema = new mongoose.Schema({
    name: String
});
var todoList = [];
var compList = [];
var Todo = mongoose.model("Todo", todoSchema);
// default route
app.get("/" , function(req, res){
    Todo.find({}, function(err, todoList){
        if (err) {
            console.log(err);
        } else {
            res.render("todo.ejs", {todoList: todoList, compList: compList});
        }
    })
});

这是新商品的代码:

app.post("/newTodo", function(req, res){
    console.log("item submited");
    var newItem = new Todo({
        name: req.body.item
    });
    Todo.create(newItem, function(err, Todo){
        if (err) {
            console.log(err);
        } else {
            console.log("Inserted item: " + newItem);
        }
    })
    res.redirect("/");
});

这是删除项目的代码:

app.get("/delete/:id", function(req, res){
    Todo.findById(req.params.id, function(err, Todo){
        if (err) {
            console.log(err);
        } else {
            console.log(req.params.id);
            Todo.remove(function(err, Todo){
                console.log("Deleted item");
                res.redirect("/");
            })
        }
    });
});

您将需要增强todoSchema来跟踪Todo是否已完成。 向您的todoSchema中添加completed: Boolean ,然后您需要过滤Todo.find()的结果,以便将未完成的待办事项返回到todoList中,并将已完成的待办事项放入compList中。 由于您正在修改文档,所有这些逻辑都应放在app.put调用中。

顺便说一句,使用.findByIdAndRemove可以使删除操作更加有效,删除条目app.get应该使用app.delete而不是app.get

(旁注:您不会将文档从一个猫鼬集合移动到另一个。每个模式都定义一个集合,因为只有一个模式,实际上您将所有待办事项文档(无论是否完成)都存储在同一个Todo集合中。 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM