[解決済み] Mongoose save() がプロミスを返さない
2022-02-13 22:49:28
質問
Mongoose のドキュメントによると、save メソッドはプロミスを返すそうです。このメソッドを使ってデータベースにユーザーモデルを保存したいのですが、どうすればいいですか?私はこのようにします。
save (user) {
user.save((err, user) => {
if (err) {
return handleError(err);
} else {
console.log('The user ' + user.screenName + ' has been added.');
}
this.db.close();
});
}
ユーザパラメータが:
mongoose.model('User', this.userSchema);
以下のconsole.logがなぜfalseを返すのか理解できません。
console.log((userRepository.save(user) instanceof Promise));
そしてもちろん、then()しようとすると、プロミスIは動作しません。
何か見落としているのでしょうか?私はまた、user.save(...)を返そうとしましたが、それはまだ動作しませんでした。
私のメッセージを読んでいただきありがとうございます。
解決方法は?
まず、あなたの
save(user)
メソッドは現在
return
であるため、結果は常に
undefined
は、Mongoose の動作に関係なく
console.log(typeof userRepository.save(user) === 'undefined'); // true
しかし、Mongooseでは一般的に、それぞれのメソッドでコールバックかプロミスのどちらかを選択するようになっています。
ドキュメントでは、例のスニペットで暗示しているだけで、これについては特に明確ではありません。
現在、Mongoose のドキュメントでは、この点が明確にされています。
:
を返します。
- "プロミス,未定義" コールバックで使用された場合はundefinedを、それ以外の場合はPromiseを返します。
コールバックです。
product.sold = Date.now(); product.save(function (err, product) { if (err) .. })
約束だ。
product.save().then(function(product) { ... });
あなたの場合、もしあなたが
Promise
の場合、あなたの
save(user)
メソッドも使用する必要があり
return
を使用します。
save (user) {
return user.save()
.then(user => console.log('The user ' + user.screenName + ' has been added.'))
.catch(err => handleError(err))
.finally(() => user.db.close());
}
(注
について
.finally()
)
関連
-
[解決済み】 console.logの出力をどこに永久保存するか?
-
[解決済み】AWS lambda function エラー - モジュール 'index' をインポートできません。エラー
-
[解決済み] AWS s3 api error: specified bucket does not exist.
-
[解決済み] -saveと-save-devの違いは何ですか?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] Node.jsを使用してディレクトリが存在しない場合に作成する方法
-
[解決済み] Mongooseで文書を更新/アップサートするにはどうしたらいいですか?
-
[解決済み] Mongooseの"__v "フィールドとは?
-
[解決済み】Mongoose: findOneAndUpdateが更新されたドキュメントを返さない
-
[解決済み] .then()チェーンで以前のプロミス結果にアクセスするにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「安全なTLS接続が確立される前にクライアントのネットワークソケットが切断されました」(ノード10
-
[解決済み】Node.jsのエラーECONNRESETをデバッグするにはどうすればよいですか?
-
[解決済み] 非推奨パッケージに関するNPM警告メッセージ
-
[解決済み】MongoDBでコレクションを日付で並べ替えるには?
-
[解決済み】Node.jsのホスト名/IPが証明書のaltnamesと一致しない。
-
[解決済み】E11000重複キーエラー mongodb mongooseのインデックス
-
[解決済み] Npmエラー - Windows NT - 解決方法
-
[解決済み] エラーです。Cannot find module 'ejs'
-
[解決済み] node.jsのセットアップウィザードが途中で終了してしまう
-
[解決済み] MongoNetworkError: 最初の接続でサーバー [localhost:27017] への接続に失敗 [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017] 。