来自findOneAndUpdate()的更新后的结果在控制台中作为请求主体返回,但是更改不会从我的前端或邮递员中保存。我已经尝试了相当多的变化,但我没有任何进展。不知道下一步该怎么走。我已经做了相当多的阅读,但遗憾的是没有结果。
useRoutes.js
require("dotenv").config();
const express = require("express");
const router = express.Router({ mergeParams: true });
const jwt = require("jsonwebtoken");
const bcryptjs = require("bcryptjs");
const cookieParser = require('cookie-parser');
const { check, validationResult } = require("express-validator");
const User = require("../models/userSchema");
const ObjectID = require('mongodb').ObjectID;
function asyncHandler(callback) {
return async (req, res, next) => {
try {
await callback(req, res, next);
} catch (error) {
next(error);
console.log(error);
}
};
}
//updates user account
router.patch("/user/:id",[
check("firstName")
.exists({ checkNull: true, checkFalsy: true })
.withMessage('Please provide a value for "firstName"'),
check("lastName")
.exists({ checkNull: true, checkFalsy: true })
.withMessage('Please provide a value for "username"'),
check("sexualPreference")
.exists({ checkNull: true, checkFalsy: true })
.withMessage('Please provide a value for "sexualPreference"'),
check("description")
.exists({ checkNull: true, checkFalsy: true })
.withMessage('Please provide a value for "description"'),
],
asyncHandler(async (req, res, next) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
const errorMessages = errors.array().map((error) => error.msg);
return res.status(400).json({ errors: errorMessages });
}
const updateObject = req.body;
console.log(req.params.id)
await User.findOneAndUpdate({ _id: new ObjectID(req.params.id) },{ updateObject }, { new: true }, function(err, doc) {
if(err) {
return res.json({success: false, message: err.message});
}
console.log(updateObject);
res.json({ updateObject });
return res.status(204).end();
});
})
);userSchema.js
const mongoose = require('mongoose');
const userSchema = mongoose.Schema( {
firstName:{
type: String,
required: true
},
lastName: {
type: String,
require: true
},
emailAddress: {
type: String,
require: true
},
password:{
type: String,
required: true
},
gender:{
type: String,
required: true
},
sexualPreference: {
type: String,
required: true
},
age: {
type: Number,
required: true
},
description: {
type: String,
required: true
},
pictures: {
type: [{
Object
}],
},
matches: {
type: [{
Object
}],
},
})
module.exports = mongoose.model('User', userSchema);发布于 2021-05-03 00:38:50
只需将updateObject原样传递给findOneAndUpdate()函数,而不是将其包装在另一个对象中。
await User.findOneAndUpdate({ _id: new ObjectID(req.params.id) }, updateObject, //...)https://stackoverflow.com/questions/67358555
复制相似问题