发布请求在nodejs中不起作用

时间:2018-08-28 06:09:52

标签: node.js mongoose

当我在浏览器中以localhost:/ users / register

进行搜索时

我收到Cannot GET /users/register,但已在路由器中将请求指定为post。我已经将body-parser导入了app.js

发布请求存在于route / users.js中

router.post("/register",(req,res,next)=>{
    console.log("Post request");
    let newUser=new User({
        name:req.body.name,
        email:req.body.email,
        username:req.body.username,
        password:req.body.password
    })
    User.addUser(newUser,(err,user)=>{
        if(err)
            res.json({success:false,msg:"Failed to register user"})
        else
            res.json({success:true,msg:"User registration successful"})
    })
})

models / user.js中的架构

const mongoose=require("mongoose")
const bcrypt = require("bcryptjs")
const config = require("../config/database")

const UserSchema=mongoose.Schema({
    name:{type:String},
    email:{type:String,required:true},
    username:{type:String,required:true},
    password:{type:String,required:true}
})

const User = module.exports=mongoose.model("User",UserSchema)


module.exports.getUserById=function(id,callback){
    User.findById(id,callback)
}

module.exports.getUserbyUsername=function(username,callback){
    query={username:username}
    User.findOne(query,callback)
}

module.exports.addUser=function(newUser,callback){
    bcrypt.genSalt(10,(err,salt)=>{
        bcrypt.hash(newUser.password,salt,(err,hash)=>{
            newUser.password=hash
            newUser.save(callback)
        })
    })
}

2 个答案:

答案 0 :(得分:0)

  1. 您的路线是/ register而非/ users / register

  2. 自使用帖子以来,您必须传递参数

  3. 使用邮递员并按照以下示例验证请求

enter image description here

修改  4.如果传递原始json,则必须使用bodyParser.raw()

app.use(bodyParser.raw({ inflate: true, limit: '100kb', type: 'text/xml' }));

答案 1 :(得分:0)

您的路线被写为发帖请求。因此,当您尝试通过浏览器搜索该请求时,该请求将被视为get请求。如果您想测试您的发帖请求,请尝试使用Postman等工具进行试用。