我有一个Express post路由,根据从DataTables Editor内联字段发送给它的数据更新mongo db。到目前为止这么好,数据库正在更新。在更新查询成功执行之后它落空的地方然后我想重定向回原始页面。 Node控制台似乎表明正在调用原始页面的GET路由,但页面本身不会加载。
POST功能的代码如下:
router.post('/edit', function(req,res){
var theKeys = _.keys(req.body);
var theMeat = theKeys[1];
var bits1 = theMeat.split("][");
// this is the updated value
var newVal = req.body[theMeat];
// this is the row _id
var cleanId = bits1[0].replace("data[row_","");
// this is the field to update
var cleanRow = bits1[1].replace("]","");
// cast the id string back to an ObjectId
var updId = new ObjectId(cleanId);
var query = {};
query[cleanRow] = newVal;
var MongoClient = mongodb.MongoClient;
var url = 'mongodb://localhost:27017/gts';
MongoClient.connect(url, function(err, db){
if(err){
console.log("Error connecting to the server", err);
}else{
//console.log("Connected for Edit");
var collection = db.collection('events');
collection.updateOne({"_id":updId},{$set:query},function(err,result){
if(err){
console.log("Error adding message", err);
}else if(result){
//console.log("Update attempted", result.result);
res.redirect('/admin');
}else{
console.log("Unknown error");
}
});
}
});
});
直接调用时,GET路由工作正常,但在这样调用时似乎停止了。
我很确定POST路由中没有任何内容导致这种情况,因为当我删除除重定向本身以外的所有内容时会发生同样的事情。
router.post('/test',function(req,res){
res.redirect('/admin');
});
请帮忙!