[英]How to group two collections in one query with MongoDB or Mongoose
[英]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.