問題タブ [gridfs-stream]
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 - Express.js と gridfs-stream でエラーをキャッチできない
簡単な画像 (画像) ダウンロード サーバーです。Express.js がリクエストを受け取り、MongoDB GridFS から画像を取得し、ファイルで応答します。
リクエストが有効な場合(リクエストしたファイルが存在する場合)はOKです。
MongoError
問題は、クエリが失敗したとき (つまり、要求された画像が存在しないとき)をキャッチできないことです。
そしてこれがルーター
そして、私はエラーをキャッチできません。存在しないものをリクエストしようとするMongoError
と、コンソールに表示され、アプリが is でクラッシュしerrno
ます1
。
コンソール出力の先頭:
これは少し異なる場合があります。他の場所で がスローされた場合Error
、エラー ハンドラ ( app.use(function(err, req, res, next){ /* ... */})
)、または少なくとも のデフォルト ハンドラによってキャッチされ、プロセスがクラッシュすることなく がExpress.js
返されます。500
要するに、MongoError
手動で処理できるように (つまり、404
応答を返すように)、アプリにこれを認識してキャッチしてもらいたいのです。
javascript - gridfs-stream を使用して find() を実行するときに GridFS バケットを指定するにはどうすればよいですか?
gridfs-stream を使用して、ファイルを検索およびフェッチするときにバケット名を指定するにはどうすればよいですか?
私の質問は、stackoverflow で見つかった次の質問のフォローアップです。どのように GridFS バケットを指定できますか?
そこにあるソリューションは、createWriteStream を呼び出すときにバケットを指定する方法の例を提供します。@vsivsi から提供されたコードに基づいて、次のコードの「root」オプションを使用して、カスタム バケットにファイルを追加できます。
これにより、ファイルが private.files と private.chunks に正常に追加されます。だから今、アップロードしたファイルを見つけて読みたいと思っています。バケットを使用しない私の find() は次のようになります。
クエリを実行するバケット/ルートを検索するにはどうすればよいでしょうか?
createReadStream() を呼び出すときに同じ「root」オプションを使用できると想定していますが、最初にそれを見つける必要があります。使用するバケット/ルートを gridfs-stream に伝える方法はありますか?
javascript - javascriptクラスでmongoDBインスタンスを開く方法は?
mongoDB 接続を使用して DB クラスを作成しましたが、このコンテキストで db インスタンスを開く方法がわかりません。
クラスでこれをどのように使用しますか?