处理节点js和mongooseasynchronous保存和redirect

我是node.js的新手,只是想了解这些东西的asynchronous性质。 好吧,这是一个非常简单的表单提交。模型如下所示: –

var mongoose=require('mongoose'); var Schema=mongoose.Schema; var PostSchema=new Schema({ title:{type:String,required:true}, post:String, }); var PostModel=mongoose.model('blogpost',PostSchema); module.exports=PostModel; 

然后路由处理程序如下:

 app.post("/submitpost",function(req,res){ var title=req.body.title; var post=req.body.post; var thepost=new PostModel({title:title,post:post}); thepost.save(function(err,data){ if(err)throw err; console.log(data); }) console.log("title is "+title); console.log("post is "+post); res.send("saved"); }); 

现在假设在“thepost.save(callback)”期间validation失败,我想显示一个错误页面,而不是“保存”。 我将如何做到这一点?

只需将响应的呈现移动到callback中即可:

 app.post("/submitpost",function(req,res){ var title=req.body.title; var post=req.body.post; var thepost=new PostModel({title:title,post:post}); thepost.save(function(err,data){ if(err) { res.render('errorPage'); } else { console.log(data); console.log("title is "+title); console.log("post is "+post); res.send("saved"); } }) });