Node JS无法发布错误?

时间:2013-07-13 18:29:13

标签: javascript node.js pug

我不确定为什么我在发布表单时遇到错误。我正在使用mongoose连接到mongodb并使用Jade作为我的视图引擎。我正在尝试将更新而不是新帐户发布到数据库中,并使用cookie来提取用户的信息。所以它是编辑用户配置文件页面。一切都在Jade文件上运行并且看起来正确,就在我点击提交按钮时它会转到:

Cannot POST /editUserProfile

我的猫鼬用户档案:

var mongoose = require('mongoose'),
    Schema = mongoose.Schema,
    bcrypt = require('bcrypt-nodejs'),
    SALT_WORK_FACTOR = 10;


var UserSchema = new Schema({ 
    email: { type: String, required: true, lowercase:true, index: { unique: true } },
    password: { type: String, required: true },
    firstName: {type: String, required: true},
    lastName: {type: String, required: true},
    phone: {type: Number, required: true},
    birthday: {type: Date, required: true}
});


UserSchema.pre('save', function(next) {
    var user = this;
    console.log("email exists");
    // only hash the password if it has been modified (or is new)
    if (!user.isModified('password')) return next();
    // generate a salt
    bcrypt.genSalt(SALT_WORK_FACTOR, function(err, salt) {
        if (err) return next(err);
        // hash the password along with our new salt
        bcrypt.hash(user.password, salt, null, function(err, hash) {
            if (err) return next(err);
            // override the cleartext password with the hashed one
            user.password = hash;
            next();
        });
    });    
});

UserSchema.methods.comparePassword = function(candidatePassword, cb) {
    bcrypt.compare(candidatePassword, this.password, function(err, isMatch) {
        if (err) return cb(err);
        cb(null, isMatch);
    });
};


module.exports = mongoose.model('User', UserSchema);

我的路线档案:

exports.editUserProfile = function(req, res) {
    User.findById(req.signedCookies.userid, function(err,user) {
        if(err) {
            res.send(err);
        } else {
            console.log(JSON.stringify(user));
    res.render('editUserProfile', {title: 'Weblio', 
        ufirstName: user.firstName,
        ulastName: user.lastName,
        uemail: user.email,
        uphone: user.phone,
        ubirthday: user.birthday
    });
    //, user: user.firstName, - taken out after title
        }
    });
};

exports.editUserProfilePost = function(req, res) {
        var updateUser = new User ({
            firstName: req.body.firstName,
            lastName: req.body.lastName,
            email: req.body.email,
            phone: req.body.phone,
            birthday: new Date(req.body.birthday) 
        });
        updateUser.save(function(err){
            console.log("here 3");
            if(!err) {
                console.log("here3a");
                res.render('userProfile', {title: 'Weblio'}); 

            } else {
                console.log("here 1a");
                (new Error('Incorrect POST'));
                return res.render('editUserProfileError', {title: 'Weblio'}); 
            }
        });

};

玉文件:

extends layout
block content   
    div.centerContent

        form.validateForm(method="POST", action="/editUserProfile")
                legend Edit Profile
                input(type="text", name="firstName", maxlength="20", placeholder=ufirstName, value=ufirstName)
                br
                input(type="text", name="lastName", maxlength="20", placeholder=ulastName, value=ulastName)
                br
                input(type="email", name="email", maxlength="20", placeholder=uemail, value=uemail)
                br
                input(type="number", name="phone", maxlength="20", placeholder=uphone, value=uphone)
                br
                input(type="date", name="birthday", placeholder=ubirthday, value=ubirthday)
                br
                input.btn.btn-primary(type="submit", name="Update", value="Save")
                a(href="/userProfile")
                    button.btn(type="button") Cancel

这是我的app.js文件:我有很多其他的东西,但是Register部分正在进行POST-ed,所以我认为app.js没有任何问题。

  app.get('/editUserProfile', user.editUserProfile);
  app.post('/editUserProfile', user.editUserProfilePost);

更新:

exports.editUserProfilePost = function(req, res, err) {


            User.findByIdAndUpdate(req.signedCookies.userid,{
            firstName: req.body.firstName,
            lastName: req.body.lastName,
            email: req.body.email,
            phone: req.body.phone,
            birthday: new Date(req.body.birthday) 
        }, function(err) {
            if(!err) {
            console.log("post2");
            res.render('userProfile', {title: 'Weblio'}); 

        } else {
            console.log("post3");
            (new Error('Incorrect POST'));
            return res.render('editUserProfileError', {title: 'Weblio'}); 
        }
        });

};

0 个答案:

没有答案