Как переместить документ из одной коллекции в другую?Мангуст, MongoDB - PullRequest
0 голосов
/ 28 мая 2018

У меня есть список TODO, где я храню незавершенные и завершенные предметы.Далее у меня есть кнопки, одна для удаления элемента (он работает), а вторая для проверки или снятия отметки, что элемент сделан или нет.

Я не знаю, как кодировать функцию для копирования и удаления элемента измассив 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("/");
            })
        }
    });
});

1 Ответ

0 голосов
/ 28 мая 2018

Вам необходимо улучшить свою todoSchema, чтобы отслеживать, завершен ли Todo или нет.Добавьте completed: Boolean к вашей todoSchema, тогда вам нужно будет отфильтровать результат Todo.find (), чтобы неполные todos возвращались в todoList, а завершенные todos помещались в compList.Вся эта логика должна идти в вызове app.put, так как вы изменяете документ.

Кстати, ваше удаление может быть сделано более эффективным с помощью .findByIdAndRemove, вместо этого вы должны также использовать app.deleteapp.get при удалении записи.

(Примечание: вы не перемещаете документ из одной коллекции мангустов в другую. Каждая схема определяет одну коллекцию, поскольку у вас есть только одна схема, фактическихранение всех документов todo (выполненных или нет) в одной коллекции Todo.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...