【发布时间】:2016-07-27 11:40:40
【问题描述】:
我已经构建了一个表单来将一些虚拟数据添加到 Mongo 集合以进行测试。添加数据的功能似乎工作正常,因为正在添加数据,但是由于某种原因,函数末尾的重定向命令没有做它的事情。数据来自沼泽标准 HTML 表单。添加数据的代码如下:
router.post('/addacc',function(req,res){
var sljEdate = "";
var pljEdate = "";
var MongoClient = mongodb.MongoClient;
var url = 'mongodb://localhost:27017/stc';
MongoClient.connect(url,function(err,db){
if(err){
console.log("Connection Error");
}else{
console.log("connected to mongo");
var collection = db.collection('account');
var query = {accountID: req.body.acc_id,companyName: req.body.acc_name,companyEmail:req.body.acc_email,companyPhone:req.body.acc_phone,companyPostCode:req.body.acc_postcode,
photographers: {phtID:"",phtName:"",phtPhone:"",phtEmail:"",phtLoc:"",preferredContact:"",lastJob:"",pljEpoch:pljEdate,phtNotes:""},
schools: {schoolID:"",schoolName:"",schoolPhone:"",schoolEmail:"",schoolPostCode:"",lastJob:"",sljEpoch:sljEdate,notes:""}};
collection.insert(query,function(err,result){
if(err){
console.log("Error inserting Account record",err);
}else{
console.log("Data Insert Success");
res.redirect("/forms");
}
db.close();
});
}
});
});
我在几个地方添加了行来登录到控制台,以便我可以检查进度并且它们都会触发,包括最后的“数据插入成功”。然而,紧随其后的 res.redirect 什么也不做。在浏览器中,URL 保持为“/addacc”,尽管节点控制台显示了“/forms”URL 的后续 GET。
我尝试了一些重定向的变体,例如使用res.send("test") 只是为了尝试输出一些东西,也是一个 res.render 函数,但它们似乎都不起作用。
我很确定我错过了一些简单的东西,但是我盯着代码看太久了,我看不出它有什么问题。事实上,我曾多次使用几乎相同的代码。这次我唯一不同的是,我正在插入一个包含嵌入式文档的 Mongo 集合,但数据插入不是问题,因为数据很好。
请帮忙!
【问题讨论】:
-
我认为重定向 POST 请求有点不同。见:stackoverflow.com/questions/17612695/…
-
好的,这很有趣,很有帮助,谢谢。我会有更多的戏剧,看看它是否能把我带到任何地方。
标签: javascript node.js mongodb redirect pug