問題タブ [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 に答える
195 参照

node.js - Jest を使用した Connect-mongo パッケージで、「テストの実行が完了してから 1 秒後に Jest が終了しませんでした」というエラーが発生する

Express-session パッケージを使用してセッション ベースの認証用のミドルウェアを構築し、セッション ストアとして connect-mongo パッケージを使用しました。

この Jest テストを実行すると:

.. 次のエラーが表示されます。

MongoStore.create()..そして、エラーはセッションミドルウェアの -function によって引き起こされます:

MongoStore が接続を開いているので、afterEach フックでアクティブに閉じる必要があるのでしょうか? はいの場合、カスタムコードではなくノードモジュールによって開かれた接続を閉じるにはどうすればよいですか?

アップデート:

問題は、Mongo 接続が開いたままになっていることでした。MongoStore を変更して、独自の接続を作成するのではなく、既存の Mongoose 接続を使用することで問題を解決しました。このようにして、セッション ストアの接続は既存の afterEach フックで閉じられました。

0 投票する
1 に答える
808 参照

node.js - MongoStore: クライアントを初期化できません。マングース接続オブジェクトを受け付けていません

セッションデータを保存するために AWS DocumentDB (AWS ブランドの MongoDB) を使用しようとしています。db.js ファイル内のデータベースに、mongoose を使用して既に正常に接続されています。

この mongoose 接続を MongoStore コンストラクターの mongooseConnection パラメーターとして渡そうとすると、次のエラーが発生します。

私の db.js は次のようになります。

エラーをスローしている私のserver.js(メイン)は次のようになります。

...そしてアプリの残りの部分。

Mongoose 接続オブジェクトをセッション ストアとして使用できるようにするには、何を変更する必要がありますか?

私は他の場所を見てきましたが、このような質問は、接続文字列を再送信して接続を倍増させるのではなく、実際のマングース接続を送信できるはずであることを示しています: エラー: クライアントを初期化できません | モンゴコネクトエクスプレスセッション

0 投票する
0 に答える
203 参照

node.js - Express-session と mongo-connect を使用して mongoDB でバイト配列を適切に保存および取得する方法

そのため、エクスプレスでmongo DBにバイト配列を取得するのに苦労しています。アプリでは、connect-mongo を使用して、express-session で収集されたセッション データを保存します。JSON であるすべての変数に対してすべてが正常に機能します。ただし、変数の 1 つは UINT8 バイト配列であり、5 MB になると失敗します。アプリでは、次を使用して mongo に生データを解析させます。

コントローラーで、ブラウザーから UINT8 配列を取得し、それをセッションに保存します。

別のルートでは、セッションから変数を取得する必要があるため、コントローラーはそれを使用して処理を行うことができます。

この最後の行は、コードがビークしたときであり、セッション ストレージから取得されたデータが 5 MB (最大サイズが必要) になると、完全に変更されます。ただし、小さいサイズの場合は問題なく機能します。どんな助けでも大歓迎です。

0 投票する
0 に答える
84 参照

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 があります。

これが私のコードの問題なのか、それとも私が使用しているパッケージの問題なのかはわかりません。助けていただければ幸いです。