问题标签 [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 回答
64 浏览

javascript - 更新到 mongoose 5.x 后无法连接到本地 mongo db

我已经检查了 Stack 和 Mongoose 文档,但我似乎无法做到这一点。正如标题中所暗示的,一切都很好,直到我升级了 mongoose 和 connect-mongo 的软件包。

这是我的database.js:

在查看 mongoose 中的文档并搜索此站点后,我尝试了以下操作:

  • 安装了 mongodb-uri 包来解析 uri(虽然我不确定本地数据库是否需要它。我也无法进入我的 heroku 数据库,但这是我正在支持的工作。
  • 添加了“useNewURLParser”等标签。
  • 将端口号添加到本地数据库地址
  • 将捕获添加到 mongoose.connect 的末尾

尽管如此,我在终端中不断收到以下错误输出,并且每当我尝试登录应用程序时数据库都会超时。这是输出:

然后,

任何见解将不胜感激。谢谢!

0 投票
0 回答
195 浏览

node.js - 带有 Jest 的 Connect-mongo 包导致错误“测试运行完成后一秒钟 Jest 没有退出”

我使用 express-session 包构建了一个用于基于会话的身份验证的中间件,作为会话存储,我使用了 connect-mongo 包。

当我运行这个 Jest 测试时:

..我得到这个错误:

..并且错误是由MongoStore.create()会话中间件中的 -function 引起的:

莫非是 MongoStore 正在打开一个连接,并且需要在 afterEach 钩子中主动关闭它?如果是,我如何关闭由节点模块而不是由我的自定义代码打开的连接?

更新:

问题确实是 Mongo 连接保持打开状态。我通过更改 MongoStore 以使用现有的 Mongoose 连接而不是创建自己的连接来解决了这个问题。这样,会话存储的连接就被现有的 afterEach 钩子关闭了。

0 投票
0 回答
17 浏览

javascript - Azure Idendity 平台重定向到主页,ensureAuth 失败

我正在尝试为我的(非常简单的)CRUD 应用程序实施身份验证步骤。所以这就是想法:连接到 localhost:8000/ 时,您需要单击登录按钮,这将提示您使用 Microsoft 帐户登录。然后您应该被重定向到 localhost:8000/feed。但它只是将我重定向到 localhost:8000。第二个问题是,我可以看到 MongoDB 存储了一个 Cookie。如果我访问 localhost:8000/auth/logout 它会删除它。所以它有效。但我仍然无法访问 localhost:8000/feed,因为 ensureAuth 不会让我访问。

确保身份验证:

}

认证/登录路径:

认证/注销路线:

进料路线:

特快专场:

如果您需要大量代码,请联系我。我将不胜感激任何形式的支持。

0 投票
0 回答
17 浏览

node.js - connect-mongo:如何为同一台机器上的不同用户实现不同的会话?

如果他们在同一台机器上,我希望为不同的用户提供不同的会话。下面是代码。我知道我可以通过直接将数据存储在数据库中轻松地做到这一点。有什么办法可以在同一个系统上进行不同的会话吗?

0 投票
1 回答
808 浏览

node.js - MongoStore:无法初始化客户端。不接受猫鼬连接对象

我正在尝试使用 AWS DocumentDB(AWS 品牌的 MongoDB)来帮助我存储会话数据。我已经通过 mongoose 成功连接到我的 db.js 文件中的数据库。

当我尝试将此 mongoose 连接作为 MongoStore 构造函数中的 mongooseConnection 参数传递给时,我收到以下错误:

我的 db.js 看起来像这样:

我的 server.js (main) 抛出错误如下所示:

...以及应用程序的其余部分。

为了能够将我的猫鼬连接对象用作会话存储,我需要进行哪些更改?

我在别处看过,但像这样的问题表明我们应该能够发送实际的猫鼬连接,而不是重新发送连接字符串并加倍连接: 错误:无法初始化客户端 | mongo-connect 快速会话

0 投票
0 回答
57 浏览

node.js - 错误“无法解析密文对象!” 在使用 connect-mongo 存储会话时

我正在使用 connect-mongo 包将会话存储在 mongoDB 中。

我按照https://www.npmjs.com/package/connect-mongo上的包文档设置了以下代码:

在我在上面的代码中使用这部分之前,一切都运行良好:

现在我在终端中收到一个错误,上面写着Unable to parse ciphertext object!

我敢肯定这是crypto因为MongoStore.create()

我应该怎么办?

除了问题之外的一个请求:我是新手并且自己学习身份验证,但我没有在会话中获得任何资源(除了包文档)并将会话存储在 DB 中而不是 memoryState() 中。所以你能告诉我这是正确的方式还是有其他有效的方式在 mongoDB 中存储会话。

0 投票
2 回答
118 浏览

node.js - 使用 `connect-mongo` 和 Mongoose 和 MongoDB Atlas 的计时问题

我将connect-mongo用于我的 ExpressJS 会话存储和Mongoose用于我的数据库连接,并且我将称之为时间问题。这是我的代码:

dbservice.js

app.js

此代码在使用本地网络上的 MongoDB 实例时效果很好,因为连接到 MongoDB 的延迟非常小,它可以工作。但是,使用 MongoDB Atlas 时,连接会有一到两秒的延迟。所以,我怀疑(我认为很棒)我的代码行const dbClient = db.getClient()失败dbservice.jsconnect-mongo抛出错误:

作为一个新手,我一直在努力尝试解决这个问题。我试图找到一种方法来mongoose.connection.readyState等待它返回一个1for connected 但失败了。

我的问题是:有没有更好的方法让我正确地返回dbClient它以等待 Mongoose 连接到 MongoDB?任何帮助是极大的赞赏。

0 投票
0 回答
203 浏览

node.js - 如何使用 express-session 和 mongo-connect 在 mongoDB 中正确存储和检索字节数组

所以,我正在努力将字节数组快速传递给 mongo DB。在应用程序中,我使用 connect-mongo 来存储使用 express-session 收集的会话数据,并且对于所有 JSON 变量来说一切正常。但是,当变量之一是 UINT8 字节数组时,当它变得高达 5MB 时,它会失败。在应用程序中,我使用以下内容获取 mongo 来解析原始数据:

在控制器中,我从浏览器获取 UINT8 数组,然后将其保存到会话中:

在另一条路线中,我必须从会话中检索变量,以便控制器可以使用它:

最后一行是当代码发出喙时,从会话存储中检索到的数据完全改变,如果它大到 5 MB(需要最大大小)。但是,它适用于较小的尺寸。任何帮助表示赞赏。

0 投票
1 回答
56 浏览

mongodb - 如何将 connect-mongo 版本 4x 与 express-session 一起使用。我收到错误

尝试在 MongoDB 上保存会话时出现错误

错误:

C:\Users\Tezz\Desktop\Express\PassportJsAuth\express-session-authenticator\node_modules\connect-mongo\build\main\lib\MongoStore.js:126 .db(options.dbName) ^

TypeError: con.db is not a function at C:\Users\Tezz\Desktop\Express\PassportJsAuth\express-session-authenticator\node_modules\connect-mongo\build\main\lib\MongoStore.js:126:18

0 投票
0 回答
84 浏览

express - 将 Passport 与 Express 一起使用时,Cookie 未存储在浏览器中

我正在使用 passport-discord 和 passport 来允许用户使用他们的不和谐帐户进行身份验证。

由于某种原因,cookie 没有存储在浏览器中(在前端网站上),我使用 axios(在请求选项中将 withCredentials 设置为 true)向我的快速服务器发出请求,该服务器从请求中获取经过身份验证的用户(req.用户),会话存储在数据库(mongodb atlas)中,但 cookie 没有存储在浏览器中。这在本地有效,但当我在 vercel 等平台上托管网站时无效。cookie 被存储在 API 页面中,而不是在前端网站上,这很奇怪。

api的主文件

/strategies/discord.js 文件(用户被序列化和反序列化的地方

auth.js 文件(用户被重定向到 Oauth2 页面):

正如您在 auth.js 文件中看到的那样,一旦用户登录,他们就会被重定向到前端网站上的公会页面。我再次向我的 API 发出请求,以获取 discord.js 的共同公会客户端和用户,我检查用户是否登录(req.user 存在),如果是,我发送共同行会或仅发送 401 响应并将用户重定向回主页。

登录网站后,我被重定向到公会页面,然后立即重定向到主页,当我检查控制台时,有一个 401 响应(来自 API)。当我检查我网站的“应用程序”选项卡时,没有 cookie,但 API 页面有 cookie。

我不确定这是否是我的代码或我正在使用的软件包之一的问题,不胜感激。