Обновить mongoDB информацией о тодолистах? - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть функция todolist в моем интерфейсе, вот демо: https://gyazo.com/a10fcd7c470439fe5cc703eef75b437f

Все это обновляется с использованием массива в компоненте Vue, а затем с использованием v-моделей для отслеживания данных и изменения пользовательского интерфейса для отображения этого массива.

Когда пользователь нажимает кнопку «отправить», я хочу, чтобы он отправлял данные в базу данных.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу понять, как импортировать вновь созданные «задачи» (текстовое поле и флажок, который создается при нажатии кнопки +) в базу данных.

Вот как выглядит каждый документ todolist в моей коллекции «todolists» в монго:

{
    "_id":"5caca1498accb128c8974d56",
    "title":"todolist1 11111 11111 11111 11111",
    "userEmail":"test@gmail.com",
    "todos":[
        {
            "_id":"5caca1498accb128c8974d57",
            "description":"Get this done",
            "completed":true}
    ],
    "dateDue":"2019-04-07T18:24:31.207Z",
    "__v":0
}

Кнопка «сохранить» в демоверсии имеет атрибут v-on: click, который имеет функцию с именем saveTodoList(), которая затем отправляет аксиос запрос на маршрут /updateTodoList

Не стесняйтесь задавать любые вопросы, которые помогут вам ответить на мой вопрос:)

1 Ответ

0 голосов
/ 11 апреля 2019

Когда новая задача сохраняется после нажатия кнопки «плюс», сделайте запрос на /updateTodoList с родительским документом _id.Таким образом, ваш запрос может выглядеть примерно так:

POST /updateTodoList:

Body:

{ "_id": "5caca1498accb128c8974d56",
  "todo": {
     "description": "This is a newly added todo description",
     "completed": false
   }
}

Затем, на стороне сервера, проанализируйте этот объект body и обновитедокумент с соответствующим _id и вставьте новый документ в документ.Ваш запрос будет выглядеть примерно так:

todolist.findOneAndUpdate({_id: req.body._id}, { $push: {todos: req.body.todo } })

Надеюсь, это поможет.

Редактировать:

Каждый раз, когда вы нажимаете задачу, используя вышеуказанный запрос, Mongo вставляет этот элемент в массив todos.Для отправки нескольких задач в одном запросе используйте оператор $each вместе с $push.Официальная документация здесь .

...