Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将文档从一个集合移动到另一个集合?猫鼬_Javascript_Mongodb_Express_Mongoose - Fatal编程技术网

Javascript 如何将文档从一个集合移动到另一个集合?猫鼬

Javascript 如何将文档从一个集合移动到另一个集合?猫鼬,javascript,mongodb,express,mongoose,Javascript,Mongodb,Express,Mongoose,我有一个待办事项列表,我在其中存储未完成和已完成的项目。接下来,我有一些按钮,一个用于删除它工作的项目,另一个用于检查或取消选中该项目是否完成 我不知道如何编写一个函数来复制和删除数组a中的项并将其放入数组B中 以下是我的模式以及如何呈现数组: var todoSchema = new mongoose.Schema({ name: String }); var todoList = []; var compList = []; var Todo = mongoose.model("To

我有一个待办事项列表,我在其中存储未完成和已完成的项目。接下来,我有一些按钮,一个用于删除它工作的项目,另一个用于检查或取消选中该项目是否完成

我不知道如何编写一个函数来复制和删除数组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是否完成。将completed:Boolean添加到todoSchema中,然后需要过滤Todo.find的结果,以便在todoList中返回未完成的Todo,并将已完成的Todo放置在compList中。所有这些逻辑都应该在app.put调用中,因为您正在修改文档

顺便说一下,使用.findbyiandremove可以提高删除效率。删除条目时,您还应该使用app.delete而不是app.get


旁注:您没有将文档从一个mongoose集合移动到另一个mongoose集合。每个模式定义一个集合,因为您只有一个模式,实际上您正在将所有已完成或未完成的todo文档存储在同一个todo集合中。

谢谢,这是个好主意。我去试试。删除:我以前试过,但它对我不起作用,所以我就这样编码。旁注:感谢您的解释,我是mongo的初学者