小编Neo*_*res的帖子

如何避免使用Express重新发送Node.js中的刷新数据

首先,我想为我的英语道歉.

我有一个使用Express和Jade的Node.js应用程序.我的主页有一个表格,允许人们注册.我通过POST发送数据.我有这样的处理程序:

app.post('/userCreate', user.create);
Run Code Online (Sandbox Code Playgroud)

和:

exports.create = function(req, res){
  //creates the user in the database
  res.render('./game/main');  //goes to the main game page
}
Run Code Online (Sandbox Code Playgroud)

我的问题是当人们注册并且我渲染主页面时,URL中出现"localhost:3000/userCreate".因此,如果我按F5,所有数据都会通过POST再次发送,因为它再次捕获'/ userCreate',并尝试创建另一个用户.

我认为一个选项可能是在创建用户后更改URL,但我意识到"渲染"和"重定向"方法都没有改变它.

我一直在阅读关于post-redirect-get模式,但我不知道如何在没有表单的情况下进行获取,我的意思是,通过javascript而不是HTML.

javascript node.js express pug

2
推荐指数
1
解决办法
4316
查看次数

无法使用Mongoose保存JavaScript对象

我正在做一个MMO实时浏览器游戏,我正在使用Mongoose(MongoDB)存储数据.

首先,我将向您展示我的对象的结构:

var playerSchema = new Schema({ name: { type: String, required: true, trim: true, index: { unique: true } }, resources: { wood: { type: Number, required: true, default: 500}, stone: { type: Number, required: true, default: 300}, iron: { type: Number, required: true, default: 0}, cereal: { type: Number, required: true, default: 0} }, resourcesPerHour: { woodPerHour: { type: Number, required: true, default: 40}, stonePerHour: { type: Number, required: true, default: 20}, ironPerHour: { type: Number, required: true, …

javascript mongoose mongodb node.js

2
推荐指数
1
解决办法
975
查看次数

Node.js中的res.redirect问题(Express)

我有一个通过AJAX执行POST请求的按钮,我希望在完成后刷新页面.

所以,我的AJAX执行POST /upgrade:

app.post("/upgrade", game.upgrade);

exports.upgrade = function(req,res){
    player.findOne({name:req.session.name}, function(err, doc){
        //doing something
        doc.save(function(err){
            if(err) console.log(err);
            else res.redirect("/game/buildings");
        });
    });
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,redirect/game/buildings

app.get('/game/buildings', game.buildings);

export.buildings = function(req,res){
    playerDB.findOne({name:req.session.name}, function(err, doc){
        //doing something
        res.render('./game/buildings', {username:req.session.name});
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是res.redirect在升级方法有效,但在buldings处理程序中,res.render似乎被忽略了.

console.log("session: "+req.session.name)buildings方法中添加了一个,没关系.所有数据似乎res.render都没问题,但不起作用.

在控制台日志中,当我/game/buildings使用菜单进入路径时(这种方式工作正常),它打印如下:

routing to buildings
session: Neoares
[90mGET /game/buildings [32m200 [90m48ms - 6.58kb[0m
[90mGET /javascripts/jquery.js [36m304 [90m0ms[0m
[90mGET /javascripts/game.js [36m304 [90m1ms[0m
[90mGET /stylesheets/bootstrap.min.css [36m304 …
Run Code Online (Sandbox Code Playgroud)

node.js express

1
推荐指数
1
解决办法
3493
查看次数

标签 统计

node.js ×3

express ×2

javascript ×2

mongodb ×1

mongoose ×1

pug ×1