如何用 JQuery Ajax 更新 MongoDB 数据
How to update MongoDB data with JQuery Ajax
我一直在尝试使用来自 Ajax 的 PUT 请求更新 mongoDB 数据(用户数据),但无法更新。我不太确定如何将数据输入 mongoDB,我一直在查看许多 Whosebug 问题,但我找不到答案。另外,我是 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;
findOneAndUpdate
需要指定搜索条件的对象作为第一个参数。所以你必须改变你的查询:
User.findOneAndUpdate(req.params.id, ...)
至此
User.findOneAndUpdate({_id: req.params.id}, ...)
我一直在尝试使用来自 Ajax 的 PUT 请求更新 mongoDB 数据(用户数据),但无法更新。我不太确定如何将数据输入 mongoDB,我一直在查看许多 Whosebug 问题,但我找不到答案。另外,我是 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;
findOneAndUpdate
需要指定搜索条件的对象作为第一个参数。所以你必须改变你的查询:
User.findOneAndUpdate(req.params.id, ...)
至此
User.findOneAndUpdate({_id: req.params.id}, ...)