【问题标题】:Express - Update does not take effect on the database MongoDBExpress - 更新对数据库 MongoDB 不生效
【发布时间】:2019-05-02 21:31:05
【问题描述】:

我的更新似乎不起作用。不是数据库问题,因为我的删除有效。

这是我的更新路线。

你能帮忙吗?我正在使用 console.log 打印控制台中的值。所有人都得到了正确的山谷。

我尝试在“更新”期间通过 console.log 打印值进行记录。

C:\Personal\Books\Trials>node app.js
Trials is running on port 3000
Success Update
5cc86fa0b5e2143684378877
Jim4
{ _id: 5cc86fa0b5e2143684378877,
  fieldname: 'Jim3',
  fieldtype: 'string',
  fieldinputtype: 'textbox',
  __v: 0 }
app.put("/adminstudy/:id",function(req,res){
    studyfields.findByIdAndUpdate(req.params.id, req.body.fieldname, function(err, returnedstudyfield){
        if(err){
            console.log(err);
            res.redirect("/adminstudy");
        } else {
            console.log("Success Update");
            console.log(req.params.id);
            console.log(req.body.fieldname);
            console.log(returnedstudyfield);
            res.redirect("/adminstudy");
        }
    });
});

这是我发送到更新路由的表单:

            <form action="/adminstudy/<%= editedstudyfield._id %>?_method=PUT" method="POST">
                <div class="form-group">
                    <input class="form-control" type="text" name="fieldname" value="<%= editedstudyfield.fieldname %>">
                </div>
                <div class="form-group">
                    <select name="fieldtype">
                        <option value="string">Text</option>
                        <option value="number">Number</option>
                    </select>
                </div>
                <div class="form-group">
                    <select name="fieldinputtype">
                        <option value="textbox">Text Box</option>
                        <option value="Textarea">Text Area</option>
                      </select>
                </div>
                <div class="form-group">
                    <button class="btn btn-lg btn-block btn-success" type="submit">UPDATE THIS STUDY FIELD</button>
                </div>
            </form>

我期待它会更新,但它没有。 任何帮助表示赞赏。

【问题讨论】:

    标签: javascript mongodb express mongoose


    【解决方案1】:

    “update”参数应该是键值对的对象:

     { fieldname: req.body.fieldname }
    

    (令我惊讶的是它并没有出错)

    【讨论】:

      【解决方案2】:

      你只向 mongo 发送一个字符串。 我猜你需要发送{fieldname: req.body.fieldname}

      studyfields.findByIdAndUpdate(req.params.id, {fieldname: req.body.fieldname} ...
      

      【讨论】:

        猜你喜欢
        • 2019-10-27
        • 1970-01-01
        • 2021-11-23
        • 1970-01-01
        • 2018-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        相关资源
        最近更新 更多