gpt4 book ai didi

javascript - 铁 :Router + Meteor - Can't both add POST data to database and render route

转载 作者:行者123 更新时间:2023-11-30 12:13:09 26 4
gpt4 key购买 nike

我正在使用 Meteor 编写一个应用程序,它需要从 POST 请求中获取数据并在同一路径上呈现成功页面。这是我当前的/submit 路线代码:

Router.route('/submit', function() {
Records.insert({
testValue: 'The Value',
importantVal: this.request.body.email,
createdAt: new Date()
});
this.render('success');
}, {where: 'server'});

当我运行这段代码时,数据被插入到 Records 数据库中,但它从未呈现成功模板。当我转到/submit 路由时,它只会永远加载,而不会在页面上实际显示任何内容。当我去掉 {where: 'server'} 时,它将呈现模板但不会将数据添加到数据库中。

如何同时获取要添加的数据和要呈现的模板?

最佳答案

问题是要将数据 POST 到路由,它必须在服务器上运行,并且您不能从服务器路由呈现客户端模板。解决此问题的一种方法是使用 302 重定向返回客户端,如下所示(代码是 coffeescript):

Router.route '/submit', where: 'server'
.post ->
Records.insert
testValue: 'The Value'
importantVal: @request.body.email
createdAt: new Date()
@response.writeHead 302, 'Location': '/success'
@response.end()

Router.route '/success', name:'success'

server 路由接收 POSTed 数据并在重定向到 client 路由之前对其进行操作。 client 路由的名称用于标识要呈现的模板。

关于javascript - 铁 :Router + Meteor - Can't both add POST data to database and render route,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33199817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com