Javascript 使用带有Express的Put方法,我得到了代码200,但没有更新
大家好,我刚刚尝试创建更新函数,并使用Postman更新Javascript 使用带有Express的Put方法,我得到了代码200,但没有更新,javascript,express,mongoose,Javascript,Express,Mongoose,大家好,我刚刚尝试创建更新函数,并使用Postman更新firstName字段。控制台中的结果是HTTP/1.1“200,但未更新任何内容 这是邮递员尸体的结果 { "user_id": "5adaa55c0364d01cd9478492", "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1YWRhYTU1YzAzNjRkMDFjZDk0Nzg0OTIiLCJpYX4OTJ9.JpDShf4iBFBCQ5rGf
firstName
字段。控制台中的结果是HTTP/1.1“200,但未更新任何内容
这是邮递员尸体的结果
{
"user_id": "5adaa55c0364d01cd9478492",
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1YWRhYTU1YzAzNjRkMDFjZDk0Nzg0OTIiLCJpYX4OTJ9.JpDShf4iBFBCQ5rGflKbsj3jisl-PS68UOTnVpxNyXs",
"data": {
"userData": [
{
"address": [
{}
]
}
]
}
}
这就是我试图更新的内容
{
"data": {
"userData": [
{
"firstName": "George"
}
]
}
}
这是我从authentication\u controller.js
exports.update = function (req, res, next) {
var email = req.body.email;
var password = req.body.password;
var role = req.body.role;
var firstName = req.body.firstName;
var lastName = req.body.lastName;
var phone = req.body.phone;
var number = req.body.number;
var street = req.body.street;
var city = req.body.city;
var postcode = req.body.postcode;
var user = req.user;
user.save(function (err) {
if (err) {
return next(err)
} else {
res.json({
user_id: user._id,
token: tokenForUser(user),
data: {
email: email,
password: password,
userData: [{
role: role,
firstName: firstName,
lastName: lastName,
phone: phone,
address: [{
number: number,
street: street,
city: city,
postcode: postcode
}],
}],
}
});
}
});
}
router.route('/users/:user_id/data')
.get(requireAuth, AuthenticationController.index)
.put(requireAuth, AuthenticationController.update);
这是我的route.js
exports.update = function (req, res, next) {
var email = req.body.email;
var password = req.body.password;
var role = req.body.role;
var firstName = req.body.firstName;
var lastName = req.body.lastName;
var phone = req.body.phone;
var number = req.body.number;
var street = req.body.street;
var city = req.body.city;
var postcode = req.body.postcode;
var user = req.user;
user.save(function (err) {
if (err) {
return next(err)
} else {
res.json({
user_id: user._id,
token: tokenForUser(user),
data: {
email: email,
password: password,
userData: [{
role: role,
firstName: firstName,
lastName: lastName,
phone: phone,
address: [{
number: number,
street: street,
city: city,
postcode: postcode
}],
}],
}
});
}
});
}
router.route('/users/:user_id/data')
.get(requireAuth, AuthenticationController.index)
.put(requireAuth, AuthenticationController.update);
您没有调用mongoose模型。您正在调用用户对象,该对象由
requireAuth
中间件通过解码JWT放置在req
上
您需要调用/使用实际的mongoose用户
型号:
const User = require('./path/to/mongoose/model/User')
...
// assuming the decoded JWT user object has an `id` property
User.findByIdAndUpdate(req.user.id, req.body)
.exec()
.then(doc => res.json(doc)
.catch(err => res.json(err))
您是否应该使用update并传递更新的对象
user.update({data},{options},(err,raw)=>{res.send(err?err:raw)})
@JoeWarner那{options}在哪里
come from?只是一个占位符,表示可以传递第二个参数中的选项。如果没有,只需传递一个空对象即可any@JoeWarner在这种情况下,什么是raw
,因为现在的响应是{“ok”:0,“n”:0,“nModified”:0}
const User=require(“../models/User”)
我正在调用它,我只是没有将此代码粘贴到这里。您不是。您正在从req调用user
。user
与user
不同。这不是在使用它,而是在导入它