【问题标题】:Update mongoDB with todolist information?用 todolist 信息更新 mongoDB?
【发布时间】:2019-09-02 06:11:28
【问题描述】:

我的前端有一个 todolist 功能,这里有一个演示:https://gyazo.com/a10fcd7c470439fe5cc703eef75b437f

使用 Vue 组件中的数组进行更新,然后使用 v-models 跟踪数据并更改 UI 以反映该数组。

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

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

这是我在 mongo 的“todolist”集合中每个 todolist 文档的样子:

{
    "_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 post 请求

如果有任何问题可以帮助您回答我的问题,请随时提出 :)

【问题讨论】:

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


    【解决方案1】:

    点击加号按钮后保存新的待办事项时,使用父文档的_id/updateTodoList 上发出请求。所以你的请求可能看起来像这样:

    发布/updateTodoList:

    主体:

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

    然后,在服务器端,解析这个 body 对象并使用匹配的_id 更新文档,并将新的 todo 推送到文档中。您的查询将如下所示:

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

    希望这会有所帮助。

    编辑:

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

    【讨论】:

    • 在正文中,我将如何附加多个待办事项?如果我这样做,它会将所有待办事项(包括旧待办事项)推送到文档中,还是只推送新创建的待办事项?
    • 用正确文档的链接编辑答案
    猜你喜欢
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多