Node.js Express会话未定义变量

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.

我似乎很难从文档中理解Express会话变量的范围。我有一个route/upload,它从另一个模块调用一个函数,其中包括跟踪有多少次插入数据库失败。此函数的一个小摘录如下所示

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: ''
}