首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法发布/更新-用户

无法发布/更新-用户
EN

Stack Overflow用户
提问于 2021-11-28 05:32:21
回答 1查看 33关注 0票数 0

我正在处理的一个应用程序有问题。尝试编辑网站论坛上的现有用户数据时,会出现消息Cannot POST /update-user

下面是update-user.ejs文件:

代码语言:javascript
复制
 <!-- 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文件

代码语言:javascript
复制
  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文件:

代码语言:javascript
复制
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文件

代码语言:javascript
复制
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地图集。

EN

回答 1

Stack Overflow用户

发布于 2021-11-28 06:23:14

在controller.js中,尝试执行以下操作:

代码语言:javascript
复制
module.exports.create = (req, res) => {
...
}

简而言之: module.exports是一个特殊的对象,默认情况下包含在Node.js应用程序中的每个JavaScript文件中。模块是表示当前模块的变量,导出是将作为模块公开的对象。因此,您分配给module.exports的任何内容都将作为一个模块公开。

有关更多信息,请访问here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70140912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档