Node.js Express会话未定义变量
我似乎很难从文档中理解Express会话变量的范围。我有一个route/upload,它从另一个模块调用一个函数,其中包括跟踪有多少次插入数据库失败。此函数的一个小摘录如下所示Node.js Express会话未定义变量,node.js,express,session,Node.js,Express,Session,我似乎很难从文档中理解Express会话变量的范围。我有一个route/upload,它从另一个模块调用一个函数,其中包括跟踪有多少次插入数据库失败。此函数的一个小摘录如下所示 client.query(query, error => { if (error) { console.log("[FAILURE][UPLOAD] Upload to database has failed"); request.
client.query(query, error => {
if (error) {
console.log("[FAILURE][UPLOAD] Upload to database has failed");
request.session.failedUploads++;
request.session.uploadStatus = `${request.session.failedUploads} upload(s) failed, check your input for possible errors or contact support`;
console.log(request.session);
} else console.log("[SUCCESS][UPLOAD] User has submitted upload to database");
})
这里的摘录试图插入数据库,并在循环中调用以插入需要上载的记录。如果一个或多个上载失败,则request.session.uploadStatus将构造一条消息
稍后,在上传完成后,客户端脚本等待大约3秒钟,然后进行获取/检查,以确定有多少上传失败。如果上传失败,客户端将向用户发出此消息警报
result.send({ message: request.session.uploadStatus });
然而,这正是我遇到一些麻烦的地方,我怀疑这些问题与作用域或异步问题有关。当首次定义request.session.uploadStatus时,我可以使用console.log查看该值,但当我稍后尝试检查该值时,console.log表示该值未定义,尽管它是在首次定义之后运行的(下面的日志文件示例)
第一个会话在上传失败后立即调用,第二个会话在客户端文件查询几秒钟后有多少上传失败时调用
我想知道是否有人知道在这种情况下会话变量如何工作的特定规则?谢谢你的帮助
[FAILURE][UPLOAD] Upload to database has failed
Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
userLoggedIn: true,
userEmail: 'john.smith@email.com',
uploadSession: [
{
'0': '1234',
'1': '8765',
'2': 'john.smith@email.com',
'3': '1',
'4': 'static\\test.jpg; '
}
],
failedUploads: 1,
uploadStatus: '1 upload(s) failed, check your file for possible errors or cont
act support'
}
[SUCCESS][RESOURCE] User has received 'index.html'
[SUCCESS][SEARCH] Loading of exam jobs has worked
Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
userLoggedIn: true,
userEmail: 'john.smith@email.com',
uploadSession: '',
failedUploads: 0,
uploadStatus: ''
}