問題タブ [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.
node.js - Jest を使用した Connect-mongo パッケージで、「テストの実行が完了してから 1 秒後に Jest が終了しませんでした」というエラーが発生する
Express-session パッケージを使用してセッション ベースの認証用のミドルウェアを構築し、セッション ストアとして connect-mongo パッケージを使用しました。
この Jest テストを実行すると:
.. 次のエラーが表示されます。
MongoStore.create()
..そして、エラーはセッションミドルウェアの -function によって引き起こされます:
MongoStore が接続を開いているので、afterEach フックでアクティブに閉じる必要があるのでしょうか? はいの場合、カスタムコードではなくノードモジュールによって開かれた接続を閉じるにはどうすればよいですか?
アップデート:
問題は、Mongo 接続が開いたままになっていることでした。MongoStore を変更して、独自の接続を作成するのではなく、既存の Mongoose 接続を使用することで問題を解決しました。このようにして、セッション ストアの接続は既存の afterEach フックで閉じられました。
node.js - MongoStore: クライアントを初期化できません。マングース接続オブジェクトを受け付けていません
セッションデータを保存するために AWS DocumentDB (AWS ブランドの MongoDB) を使用しようとしています。db.js ファイル内のデータベースに、mongoose を使用して既に正常に接続されています。
この mongoose 接続を MongoStore コンストラクターの mongooseConnection パラメーターとして渡そうとすると、次のエラーが発生します。
私の db.js は次のようになります。
エラーをスローしている私のserver.js(メイン)は次のようになります。
...そしてアプリの残りの部分。
Mongoose 接続オブジェクトをセッション ストアとして使用できるようにするには、何を変更する必要がありますか?
私は他の場所を見てきましたが、このような質問は、接続文字列を再送信して接続を倍増させるのではなく、実際のマングース接続を送信できるはずであることを示しています: エラー: クライアントを初期化できません | モンゴコネクトエクスプレスセッション
node.js - Express-session と mongo-connect を使用して mongoDB でバイト配列を適切に保存および取得する方法
そのため、エクスプレスでmongo DBにバイト配列を取得するのに苦労しています。アプリでは、connect-mongo を使用して、express-session で収集されたセッション データを保存します。JSON であるすべての変数に対してすべてが正常に機能します。ただし、変数の 1 つは UINT8 バイト配列であり、5 MB になると失敗します。アプリでは、次を使用して mongo に生データを解析させます。
コントローラーで、ブラウザーから UINT8 配列を取得し、それをセッションに保存します。
別のルートでは、セッションから変数を取得する必要があるため、コントローラーはそれを使用して処理を行うことができます。
この最後の行は、コードがビークしたときであり、セッション ストレージから取得されたデータが 5 MB (最大サイズが必要) になると、完全に変更されます。ただし、小さいサイズの場合は問題なく機能します。どんな助けでも大歓迎です。
express - Express で Passport を使用すると、ブラウザに Cookie が保存されない
私はパスポート不和とパスポートを使用して、ユーザーが不和アカウントを使用して認証できるようにしています。
何らかの理由で、Cookie がブラウザー (フロントエンド Web サイト) に保存されていません。axios (リクエスト オプションで withCredentials を true に設定) を使用して、リクエストから認証済みユーザーを取得する Express サーバーにリクエストを送信します (req.ユーザー)、セッションはデータベース (mongodb atlas) に保存されますが、Cookie はブラウザーに保存されません。これはローカルで機能しますが、vercel のようなプラットフォームで Web サイトをホストしている場合は機能しません。Cookie は API ページに保存されていますが、フロントエンド Web サイトには保存されていません。これは非常に奇妙です。
API のメイン ファイル:
/strategies/discord.js ファイル (ユーザーがシリアライズおよびデシリアライズされる場所:
auth.js ファイル (ユーザーが Oauth2 ページにリダイレクトされる場所):
auth.js ファイルでわかるように、ユーザーがログインすると、フロントエンド Web サイトのギルド ページにリダイレクトされます。discord.js の相互ギルドを取得するために、API に再度リクエストを行います。クライアントとユーザー。ユーザーがログインしているかどうか (req.user が存在するかどうか) を確認し、ログインしている場合は、相互ギルドまたは単に 401 応答を送信し、ユーザーをホームページにリダイレクトします。
Web サイトにログインすると、ギルド ページにリダイレクトされ、すぐにホームページにリダイレクトされます。コンソールを確認すると、(API から) 401 応答があります。Web サイトの [アプリケーション] タブを確認すると、Cookie はありませんが、API ページには Cookie があります。
これが私のコードの問題なのか、それとも私が使用しているパッケージの問題なのかはわかりません。助けていただければ幸いです。