我正在处理的一个应用程序有问题。尝试编辑网站论坛上的现有用户数据时,会出现消息Cannot POST /update-user。
下面是update-user.ejs文件:
<!-- include header -->
<%- include('include/_header') %>
<!-- /include header -->
<!-- Main Site -->
<main id="site-main">
<div class="container">
<div class="box-nav d-flex justify-between">
<div class="filter">
<a href="/"><i class="fas fa-angle-double-left"></i> All Users</a>
</div>
</div>
<div class="form-title text-center">
<h2 class="text-dark">Update User</h2>
<span class="text-light">Use the below form to Update an account</span>
</div>
<!-- add user form -->
<!-- form handling -->
<form method="POST" id="update_user">
<div class="new_user">
<div class="form-group">
<label for="name" class="text-light">Name</label>
<input type="hidden" name="id" value="<%= user._id %>" />
<input
type="text"
name="name"
value="<%= user.name %>"
placeholder="Random Name"
/>
</div>
<div class="form-group">
<label for="Email" class="text-light">Email</label>
<input
type="text"
name="email"
value="<%= user.email%>"
placeholder="example@gmail.com"
/>
</div>
<div class="form-group">
<label for="gender" class="text-light">Gender</label>
<div class="radio inline">
<input type="radio" id="radio-2" name="gender" value="Male" <%=
user.gender == 'Male' ? 'checked' : '' %>>
<label for="radio-2" class="radio-label">Male</label>
</div>
<div class="radio inline">
<input type="radio" id="radio-3" name="gender" value="Female" <%=
user.gender == 'Female' ? 'checked' : '' %> >
<label for="radio-3" class="radio-label">Female</label>
</div>
</div>
<div class="form-group">
<label for="gender" class="text-light">Status</label>
<div class="radio inline">
<input type="radio" id="radio-4" name="status" value="Active" <%=
user.status == 'Active' ? 'checked' : '' %> >
<label for="radio-4" class="radio-label">Active</label>
</div>
<div class="radio inline">
<input type="radio" id="radio-5" name="status" value="Inactive" <%=
user.status == 'Inactive' ? 'checked' : '' %> >
<label for="radio-5" class="radio-label">Inactive</label>
</div>
</div>
<div class="form-group">
<button type="submit" class="btn text-dark update">Save</button>
</div>
</div>
</form>
</div>
</main>
<!-- /Main Site -->
<!-- include footer -->
<%- include('include/_footer') %>
<!-- /include footer -->我还有这个controller.js文件
var Userdb = require('../model/model');
//create and save new users
exports.create = (req, res) => {
//validate request
if (!req.body) {
res.status(400).send({
message: "User content can not be empty"
});
return;
}
//new user
const user = new Userdb({
name:req.body.name,
email:req.body.email,
gender:req.body.gender,
status:req.body.status
});
//save user in the database
user
.save(user)
.then(data=>{
//res.send(data);
res.redirect('/add-user')
})
.catch(err=>{
res.status(500).send({message:err.message || "Error occured while creating a create operation" });
});
};
//retrieve and return all users/retrieve and return a single user
exports.find =(req,res)=> {
if(req.query.id)
{
const id = req.query.id;
Userdb.findById(id)
.then(data =>{
if(!data){
res.status(404).send({
message:"User not found with id ${id}"+id
});
}
else
{
res.send(data);
}
});
}else{
try{
Userdb.find()
.then(user=>{
res.send(user);
})
.catch(err=>{
res.status(500).send({message:err.message || "Error occured while retrieving user information"});
});
}
finally{
console.log("done");
}
}
};
//Update a new identified user by user id
exports.update = (req, res) => {
if(!req.body){
return res.status(400).send({
message:"data to update content can not be empty"
});
}
const id = req.params.id;
Userdb.findByIdAndUpdate(id, req.body,{ useFindAndModify: false})
.then(data=>{
if(!data){
res.status(404).send({
message:"User not found with id${id} "
});
}else
{
res.send(data);
}
});
};
//Delete a user with specified user id in request
exports.delete = (req, res) => {
const id = req.params.id;
Userdb.findByIdAndDelete(id).then(data=>{
if(!data){
res.status(404).send({
message:"Cannot delete with id${id} "
});
}else{
res.send({message:"User deleted successfully"});
}
});
};下面是model.js文件:
const mongoose = require('mongoose');
var schema = new mongoose.Schema({
name:{
type:String,
required:true
},
email:{
type:String,
required:true,
unique:true
},
gender: String,
status: String
});
const Userdb = mongoose.model('userbd',schema);
module.exports = Userdb;和router.js文件
const express = require('express');
const route = express.Router();
const services = require('../services/render');
const controller = require('../controller/controller');
/* @descript Root Route
@method GET/
*/
route.get('/',services.homeRoutes);
/* @descript add users
@method GET/ add-user
*/
route.get('/add-user', services.add_user);
/* @descript update users
@method GET/ update-user
*/
route.get('/update-user', services.update_user);
//API
route.post('/api/users', controller.create);
route.get('/api/users', controller.find);
route.put('/api/users/:id', controller.update);
route.delete('/api/users/:id', controller.delete);
module.exports=route;数据库连接良好,我可以添加新用户,但当尝试编辑现有用户时,我收到POST消息。试图缩小问题的确切位置和问题所在。我正在使用MongoDB地图集。
发布于 2021-11-28 06:23:14
在controller.js中,尝试执行以下操作:
module.exports.create = (req, res) => {
...
}简而言之: module.exports是一个特殊的对象,默认情况下包含在Node.js应用程序中的每个JavaScript文件中。模块是表示当前模块的变量,导出是将作为模块公开的对象。因此,您分配给module.exports的任何内容都将作为一个模块公开。
有关更多信息,请访问here
https://stackoverflow.com/questions/70140912
复制相似问题