问题标签 [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.
javascript - 更新到 mongoose 5.x 后无法连接到本地 mongo db
我已经检查了 Stack 和 Mongoose 文档,但我似乎无法做到这一点。正如标题中所暗示的,一切都很好,直到我升级了 mongoose 和 connect-mongo 的软件包。
这是我的database.js:
在查看 mongoose 中的文档并搜索此站点后,我尝试了以下操作:
- 安装了 mongodb-uri 包来解析 uri(虽然我不确定本地数据库是否需要它。我也无法进入我的 heroku 数据库,但这是我正在支持的工作。
- 添加了“useNewURLParser”等标签。
- 将端口号添加到本地数据库地址
- 将捕获添加到 mongoose.connect 的末尾
尽管如此,我在终端中不断收到以下错误输出,并且每当我尝试登录应用程序时数据库都会超时。这是输出:
然后,
任何见解将不胜感激。谢谢!
node.js - 带有 Jest 的 Connect-mongo 包导致错误“测试运行完成后一秒钟 Jest 没有退出”
我使用 express-session 包构建了一个用于基于会话的身份验证的中间件,作为会话存储,我使用了 connect-mongo 包。
当我运行这个 Jest 测试时:
..我得到这个错误:
..并且错误是由MongoStore.create()
会话中间件中的 -function 引起的:
莫非是 MongoStore 正在打开一个连接,并且需要在 afterEach 钩子中主动关闭它?如果是,我如何关闭由节点模块而不是由我的自定义代码打开的连接?
更新:
问题确实是 Mongo 连接保持打开状态。我通过更改 MongoStore 以使用现有的 Mongoose 连接而不是创建自己的连接来解决了这个问题。这样,会话存储的连接就被现有的 afterEach 钩子关闭了。
javascript - Azure Idendity 平台重定向到主页,ensureAuth 失败
我正在尝试为我的(非常简单的)CRUD 应用程序实施身份验证步骤。所以这就是想法:连接到 localhost:8000/ 时,您需要单击登录按钮,这将提示您使用 Microsoft 帐户登录。然后您应该被重定向到 localhost:8000/feed。但它只是将我重定向到 localhost:8000。第二个问题是,我可以看到 MongoDB 存储了一个 Cookie。如果我访问 localhost:8000/auth/logout 它会删除它。所以它有效。但我仍然无法访问 localhost:8000/feed,因为 ensureAuth 不会让我访问。
确保身份验证:
}
认证/登录路径:
认证/注销路线:
进料路线:
特快专场:
如果您需要大量代码,请联系我。我将不胜感激任何形式的支持。
node.js - connect-mongo:如何为同一台机器上的不同用户实现不同的会话?
如果他们在同一台机器上,我希望为不同的用户提供不同的会话。下面是代码。我知道我可以通过直接将数据存储在数据库中轻松地做到这一点。有什么办法可以在同一个系统上进行不同的会话吗?
node.js - MongoStore:无法初始化客户端。不接受猫鼬连接对象
我正在尝试使用 AWS DocumentDB(AWS 品牌的 MongoDB)来帮助我存储会话数据。我已经通过 mongoose 成功连接到我的 db.js 文件中的数据库。
当我尝试将此 mongoose 连接作为 MongoStore 构造函数中的 mongooseConnection 参数传递给时,我收到以下错误:
我的 db.js 看起来像这样:
我的 server.js (main) 抛出错误如下所示:
...以及应用程序的其余部分。
为了能够将我的猫鼬连接对象用作会话存储,我需要进行哪些更改?
我在别处看过,但像这样的问题表明我们应该能够发送实际的猫鼬连接,而不是重新发送连接字符串并加倍连接: 错误:无法初始化客户端 | mongo-connect 快速会话
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 中存储会话。
node.js - 使用 `connect-mongo` 和 Mongoose 和 MongoDB Atlas 的计时问题
我将connect-mongo用于我的 ExpressJS 会话存储和Mongoose用于我的数据库连接,并且我将称之为时间问题。这是我的代码:
dbservice.js
app.js
此代码在使用本地网络上的 MongoDB 实例时效果很好,因为连接到 MongoDB 的延迟非常小,它可以工作。但是,使用 MongoDB Atlas 时,连接会有一到两秒的延迟。所以,我怀疑(我认为很棒)我的代码行const dbClient = db.getClient()
失败dbservice.js
并connect-mongo
抛出错误:
作为一个新手,我一直在努力尝试解决这个问题。我试图找到一种方法来mongoose.connection.readyState
等待它返回一个1
for connected 但失败了。
我的问题是:有没有更好的方法让我正确地返回dbClient
它以等待 Mongoose 连接到 MongoDB?任何帮助是极大的赞赏。
node.js - 如何使用 express-session 和 mongo-connect 在 mongoDB 中正确存储和检索字节数组
所以,我正在努力将字节数组快速传递给 mongo DB。在应用程序中,我使用 connect-mongo 来存储使用 express-session 收集的会话数据,并且对于所有 JSON 变量来说一切正常。但是,当变量之一是 UINT8 字节数组时,当它变得高达 5MB 时,它会失败。在应用程序中,我使用以下内容获取 mongo 来解析原始数据:
在控制器中,我从浏览器获取 UINT8 数组,然后将其保存到会话中:
在另一条路线中,我必须从会话中检索变量,以便控制器可以使用它:
最后一行是当代码发出喙时,从会话存储中检索到的数据完全改变,如果它大到 5 MB(需要最大大小)。但是,它适用于较小的尺寸。任何帮助表示赞赏。
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
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。
我不确定这是否是我的代码或我正在使用的软件包之一的问题,不胜感激。