【问题标题】:How to update MongoDB data with JQuery Ajax如何使用 JQuery Ajax 更新 MongoDB 数据
【发布时间】:2019-08-04 18:35:54
【问题描述】:

我一直在尝试使用来自 Ajax 的 PUT 请求更新 mongoDB 数据(用户数据),但无法更新。我不确定如何将数据输入到 mongoDB,我一直在查看许多 stackoverflow 问题,但找不到答案。另外,我是 Ajax 的新手,因此非常感谢任何帮助!谢谢。


Edit.ejs

    <% include ../partials/header %>

<h1>Edit your profile</h1>


<p id="updateData"></p>

<form method="POST"> 
    <input type="text" id="name" name="name" value="<%= user.name %>">
    <input type="text" id="email" name="email" value="<%= user.email %>">
    <a id="saveButton" href='javascript:void(0)' data-userid="<%= user._id %>">Edit</a>
</form>

<script>
    //Get/read

    $(function() {
        $("#saveButton").on('click', function () {
            var id = $(this).data("userid");
            var data = {
                name: $("#name").val(),
                email: $("#email").val()
            }
            $.ajax({
                method: "PUT",
                url: '/profile/' + id + "?_method=PUT",
                dataType: 'json',
                data: data
            }).success(function(data){
                updateData.append("<p>Response: Data saved!</p>");
                console.log("Successful!" + data);
            }).fail(function(data){
                console.log("Oops not working" + data);
            });
        });
    })
</script>


<% include ../partials/footer %>  

服务器端 (node.js)

var express = require("express");
var router = express.Router({ mergeParams: true });
var User = require("../models/user"),
    { userIsLogged } = require('../config/auth'), // check if user is logged in
    { checkIfBlogOwner } = require('../config/auth'); // check if user is logged in


// UPDATE the Profile
router.put("/:id", userIsLogged, function (req, res) {

    var name = req.body.name;
    var email = req.body.email;

    User.findOneAndUpdate(req.params.id, { $set: { "name": name, "email": email } }, function (err, result) {
        if (err) {
            res.send("Error" + err);
        } else {
            // res.redirect("/profile/" + req.params.id);
            res.send("From router Put: Worked!");
        }
    });
});



//Global Router
module.exports = router;

【问题讨论】:

  • 返回的错误是什么?

标签: jquery node.js ajax mongodb body-parser


【解决方案1】:

findOneAndUpdate 需要一个指定搜索条件的对象作为第一个参数。所以你必须改变你的查询:

User.findOneAndUpdate(req.params.id, ...)

到这里

User.findOneAndUpdate({_id: req.params.id}, ...)

【讨论】:

  • :facepalm: 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-12
  • 2016-08-03
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2015-03-22
  • 2011-07-10
相关资源
最近更新 更多