我的前端有一个待办事项列表功能,下面是一个演示: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发布请求
随时问任何可以帮助您回答我的问题的问题:)
答案 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。