问题标签 [connect-mongo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
98 浏览

node.js - mongoDB express-session中的所有活动会话

如何在 nodejs 中使用带有 express-session 的 mongo store 获取所有活动会话。我试过的是:store.all((err,session)=>{ console.log(session); })

但它在我初始化 mongo 存储的同一个文件中,但我无法在 nodejs 的其他文件中使用它。请帮我解决这个问题。

0 投票
0 回答
510 浏览

node.js - 猫鼬:你如何访问会话模型?

我使用express-session包来处理express中的会话。我使用mongooseconnect-mongo将会话存储在 mongodb 中以进行快速会话存储。

当express-session创建的会话过期时,我试图从我的集合中删除一些项目。通常,如果我自己创建了这个模型,我会使用类似的东西:

所以现在当记录被删除时(我假设它到期)我也可以删除所有链接的项目。

问题是我不知道如何访问由express-sessionconnect-mongo创建的模式/模型以向此“会话”模式/模型添加挂钩。

这是我目前使用mongooseexpress-sessions进行会话的第一个项目,所以我不太确定如何创建会话模型并将其提供给 mongodb,但是在建立 mongo 连接后,我可以在数据库(cloud.mongodb.com),所以我假设在某些时候“会话”模型是由express-sessionconnect-mongo创建的,但我找不到如何访问它来添加一些钩子。

同样奇怪的是,如果我在初始化后很长时间(以及在创建第一个会话之后)尝试在 mongoose 中查看所有定义的模型,如下所示:console.log(mongoose.models);我只能看到我定义的模型,但没有显示“会话”模型。

编辑:我可以通过创建一些作业来解决这个问题,该作业通过迭代每个项目来删除没有现有链接的所有记录,但考虑到猫鼬中有可用的钩子,我认为这不是非常理想的方法。

0 投票
0 回答
58 浏览

mongodb - 无法获取 Passport.js 的 req.user 值

我花了几个小时弄清楚为什么当 Passport.js 序列化用户时我无法获得 req.user 的值。但神奇的是,当我删除保存会话的数据库集合时,它又工作了。

我的堆栈:

  • Vue.js
  • 表达
  • Mongoose MongoDb(我将数据存储在 Atlas 上)
  • 节点.js

我使用express-sessionandconnect-mongo来创建和保存会话数据,并使用 Passport.js 使用它来序列化和反序列化用户

应用程序.js:

然后我调用req.user这样的路线:

我正在/api/users使用托管在 localhost 端口 8080 上的 Vue.js 和 Axios 调用前端。另外,通过调用在服务器本身上进行测试http://localhost:3000/api/users

现在它可以工作了,因为我已经删除sessionsMongoDb Atlas 上的数据库集合。

我只是想知道为什么会这样?以后还会重蹈覆辙吗?

0 投票
0 回答
10 浏览

express - 存储会话上的密钥不起作用

据我了解,connect-mongo 中的密钥选项会导致会话中的会话 _id 存储在 db 中,由密钥加密并将其作为 cookie 发送给客户端。但实际上我可以在 cookie 内的 db 中看到相同的 id(无论我选择什么作为密钥)。任何人都可以确认密钥在 connect-mongo 2.0.3 中有效吗?

谢谢

0 投票
1 回答
81 浏览

reactjs - React、connect-mongoose 和 Express 会话/用户登录

我正在尝试让会话与 React 前端和使用 MongoStore 后端的 express + connect-mongo 一起工作。

处理寄存器功能

处理登录功能

我一直在试图弄清楚如何在上述任何一个功能之后将数据发送回以做出反应。在注册功能中,我发回了res.data包含会话的内容。见快递路线

使用console.log(req.session)它输出我在会话本身中添加的cookie和用户名。

我应该在反应端创建一个用户对象并将用户名和密码存储在里面吗?我是否应该将会话本身传递回路由, history.push({ pathname: '/',state: res.data}); 如何使用 connect-mongo 验证会话对用户有效?

0 投票
1 回答
618 浏览

node.js - 如何使用 connect mongo 在请求之外更新快速会话?

我正在构建与 Express Session 的集成,并尝试在单独的 webhook 中对用户进行身份验证。所以我需要一种方法来更新请求之外的用户会话,因为这将是一个不同的请求。

我所做的是将会话 ID 传递给新请求,并使用 MongoClient 更新数据库中的会话。我记得 Express Session 只将 ID 存储在客户端,而数据存储在数据库中,所以我假设更新数据库就可以了。但情况似乎并非如此。我可以清楚地看到 MongoDB 上的会话已全部更新,但我一直在req.session.data.

这是我所做的

所以我尝试的第一件事是使用这样的req.session.reload()方法:

更新快速会话会话

在 Node.js 和 express-session 中更改和刷新会话数据

但它仍然给我过时的数据,好像该函数什么也没做(它确实打印了日志,所以我认为它确实运行了)。

我尝试使用它使用store.get()Express Session 中的方法,但它给了我undefined会话。

使用 session_id 从 Mongo 快速加载会话

所以作为最后的手段,我使用 MongoClient 直接获取会话数据并使用获得的数据更新会话。我对路由处理程序使用异步并等待 MongoClient 获取数据。它不等待 await 而只是继续投掷undefined。我认为这是我的代码错误,但我能够使用代码获取用户数据,并且它确实等待 MongoClient 获取数据,但不知何故它不适用于会话数据。

这是我的代码的一部分:

这是我检查过的其他答案

这个只更新过期,所以我假设它对我不起作用,我确实将 resave 设置为 false 以便它不会尝试保存每个请求,因为它保存到数据库我认为它无关通过更新,我尝试将其设置为 true,但什么也没发生。

更新/刷新快速会话

而在这方面它使用了socket.io,store.get()所以它也不能正常工作。

如何在请求之外以快递方式访问会话?

有人可以指导我如何让 Express Session 从数据库中更新,或者有没有办法从数据库中获取数据并以这种方式更新会话?

0 投票
4 回答
5366 浏览

mongodb - 错误:无法初始化客户端 | mongo-connect 快速会话

尝试在 mongodb 上保存会话时出现错误。这是我的代码..

和 db.js

错误就在这里..

我试图从const MongoStore = require("connect-mongo").default更改为const MongoStore = require("connect-mongo")(session)

但是错误正在显示..

使用 Connect-mongo 4.2,express-session 1.17.1 express 4.17.1 mongodb 3.6.4

不知道我错过了什么。

请帮忙。

提前致谢。

伊尔凡。

0 投票
4 回答
1721 浏览

javascript - TypeError:没有'new'就不能调用类构造函数MongoStore

我正在创建一个 Next.js 网络应用程序......

在服务器文件夹内的 app.js 文件中,我有以下代码:

由于某种原因,当我运行上述代码时出现以下错误:

UnhandledPromiseRejectionWarning:TypeError:没有'new'就不能调用类构造函数MongoStore

似乎产生该错误的行似乎是:

是什么原因造成的,我该如何解决?

0 投票
0 回答
31 浏览

express - 快速会话不会在重新加载时持续存在。(连接蒙戈)

我有以下代码库。

尽管使用了 connect-mongo,但 Express-session 似乎并没有持续存在。

(mongoDB、mongoose、express-session、connect-mongo)

我认为这是 cors 问题,因为它似乎在 Postman 上持续存在并添加了以下代码而没有更改/修复。

有人知道这里的问题吗?这是 cors 问题还是 connect-mongo 配置问题?

模型.ts

路线.ts

0 投票
1 回答
45 浏览

node.js - 如何使用 connect-mongodb-session 包将同一个 mongo 商店从一个节点应用程序引用到另一个应用程序

我有两个节点应用程序项目,其中一个用于登录身份验证服务器(server_app.js),另一个是仪表板节点项目(app_dashboard.js)。我将会话存储在名为会话的 mongodb 存储集合中。

server_app.js

现在,在成功登录 cookie 后,我将 session_id 转发到另一个应用程序,并且我想在我的 app_dashboard.js 会话中引用同一个 MongoDB 存储,如何使其工作以引用 server_app.js 中使用的同一个 mongo 存储来验证我的会议?

app_dashboard.js