【问题标题】:Pug templates with Node express - Issues with POST带有 Node express 的 Pug 模板 - POST 问题
【发布时间】:2018-05-19 16:43:47
【问题描述】:

晚上好,我目前只是想学习 Node 并创建一个小项目。我有一个问题,我似乎无法完全解决。我有一个包含路由的快速后端,这些路由在邮递员中工作正常,但是当通过 pug 模板合并时,表单中的细节似乎没有通过。 就好像 pug 模板没有从表单中收集属性,它通过验证错误发送“必须要求名字等”。这也是我第一次使用 PUG,所以任何帮助(或者可能是愚蠢的指针)将不胜感激。

对于路线:

//Register new user
router.post('/register', function(req,res,next){
    user.create(req.body).then(function(user){
        res.send(user); //new instance and save
    }).catch(next);
});

对于 PUG 模板:

extends layout
block content
      h1 Sign Up
      form#addUser(name="adduser",action='api/register', method='POST')
        label(for='firstName') First Name
        input#users.firstName(type='text' placeholder='firstName' name='firstName')
        div.form-group
          label(for='lastName') Last Name
          input#users.lastName(type='text' placeholder='lastName' name='lastName')
          div.form-group
            label(for='userName') UserName
            input#users.userName(type='text' placeholder='userName' name='userName')
          div.form-group
            label(for='password') Password
            input#users.password(type='password' placeholder='password' name='password')
          div.form-group
            label(for='email') Email
            input#users.email(type='text' placeholder='email' name='email')
        div.form-group
          label(for='jobTitle') Job Title
          input#users.jobTitle(type='text' placeholder='jobTitle' name='jobTitle')
        button(type='submit', value='add') SignUp

用户模型:

    const UserSchema = new Schema({
    userName: {
        type: String,
        unique: true,
        required:[true, "Username is required"]
    },
    password: {
        type: String,
        required: [true, "Password is required"]
    },
    email: {
        type: String,
        required: [true, "Email is required"]
    },
    firstName: {
        type: String,
        required:[true, "Name field is required"]
    },
    lastName: {
        type: String,
        required: [true, "Name field is required"]
    },
    jobTitle :{
        type: String,
        required: [true, "Position is required"]
    }
});

const User = mongoose.model('users', UserSchema);

module.exports = User;

错误输出:

“用户验证失败:jobTitle:职位是必需的,lastName:名称字段是必需的,firstName:名称字段是必需的,email:电子邮件是必需的,密码:密码是必需的,userName:用户名是必需的”

【问题讨论】:

    标签: pug


    【解决方案1】:

    您是否使用 Sequelize 来存储您的数据?尝试将您的表单输入与您的用户模型相匹配,如下所示:

    form
     userName
     password
     email
     firstName
     lastName
     jobTitle
    

    另外,您的路由器是否连接到您的控制器?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 2023-03-13
      • 2021-09-13
      • 2018-07-26
      • 2015-07-18
      相关资源
      最近更新 更多