gpt4 book ai didi

node.js - Express 用户未定义

转载 作者:太空宇宙 更新时间:2023-11-04 01:11:59 24 4
gpt4 key购买 nike

嗨,我一直在努力解决this教程并遇到了问题。

在我的 edit.jade 文件中,我有这个 -

form(method="POST", action="/users/")
input(type="hidden", name="_method", value="PUT")
p Name:
input#name(type="text", name="name", value="#{user.name}")
p Email:
input#email(type="email", name="email", value="#{user.email}")
p Age:
input#age(type="number", name="age", value="#{user.age}")
p: button(type="submit") Update

我用这段代码调用 View -

app.param('name', function (req, res, next, name){
Users.find({ name: name }, function (err, docs) {
req.user = docs[0];
next();
});
});
app.get('/users/:name/edit', function (req, res){
res.render("users/edit", { user: req.user });
});

但是,在渲染edit.jade文件时,抛出此错误 -

ReferenceError: edit.jade:6
4| input(type="hidden", name="_method", value="PUT")
5| p Name:
> 6| input#name(type="text", name="name", value="#{user.name}")
7| p Email:
8| input#email(type="email", name="email", value="#{user.email}")
9| p Age:

user is not defined
at eval (eval at <anonymous> (/usr/local/lib/node_modules/jade/lib/jade.js:171:8),<anonymous>:32:99)
at /usr/local/lib/node_modules/jade/lib/jade.js:172:35
at /usr/local/lib/node_modules/jade/bin/jade:154:17
at /usr/local/lib/node_modules/jade/node_modules/mkdirp/index.js:38:26
at Object.oncomplete (fs.js:107:15)

这对我来说毫无意义。它确实使用字段中的正确值呈现页面,但我无法提交表单。有想法吗?

最佳答案

通过使用:

app.param('name', function (req, res, next, name){
//...
});

您正在将参数name映射到从数据库检索的用户。您当前正在从 URL 中提取此参数:

app.get('/users/:name/edit', function (req, res){
// ...
});

:name token 告诉 Express 它应该调用上面的代码并检索将保存在请求地址中的用户。

但是,模板中的表单向 /users/ 发出请求,并且未指定任何用户。因此,要么为表单生成正确的 URL:

form(method="POST", action="/users/#{user.name}/xxx")

否则该方法将失败。

我不知道教程的具体内容,但我想应该有另一个请求处理程序将这些参数保存到数据库中。

关于node.js - Express 用户未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16121873/

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