使用待办事项列表信息更新mongoDB吗?

时间:2019-04-11 14:46:44

标签: node.js mongodb express vue.js axios

我的前端有一个待办事项列表功能,下面是一个演示:https://gyazo.com/a10fcd7c470439fe5cc703eef75b437f

所有这些都使用Vue组件中的数组进行更新,然后使用v模型来跟踪数据并更改UI以反映该数组。

当用户单击“发送”时,我希望它将数据发送到数据库。

我遇到的问题是我无法确定如何将新创建的“待办事项”(单击+按钮时创建的文本框和复选框)导入数据库。

这是每个待办事项清单文档在我的mongo“ 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发出axios发布请求

随时问任何可以帮助您回答我的问题的问题:)

1 个答案:

答案 0 :(得分:0)

在单击加号按钮后保存新的待办事项时,请使用父文档的/updateTodoList_id上进行请求。因此,您的请求可能看起来像这样:

POST /updateTodoList

身体:

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

然后,在服务器端,解析此正文对象并使用匹配的_id更新文档,然后将新的待办事项推送到文档中。您的查询将如下所示:

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

希望这会有所帮助。

编辑:

每次使用上述查询推送待办事项时,mongo都会将该元素插入待办事项数组。要在单个查询中推送多个待办事项,请使用$each运算符和$push。官方文档here