[解決済み] Mongoose クエリ (例: findById) が返すデータを変更できないのはなぜですか?
2022-12-14 16:03:32
質問
Mongoose クエリで返されたデータのどこかを変更しようとしても、効果がありません。
私は昨日2時間ほどこれを理解しようとして、あらゆる種類の
_.clone()
を使ったり、一時記憶変数を使ったりして、2 時間ほどこの問題を解決しようとしていました。ようやく、気が狂いそうになったときに、解決策を見つけました。だから、未来の誰かが(fyuuuture!)保存の問題を抱えているかもしれないと思ったのです。
Survey.findById(req.params.id, function(err, data){
var len = data.survey_questions.length;
var counter = 0;
_.each(data.survey_questions, function(sq){
Question.findById(sq.question, function(err, q){
sq.question = q; //has no effect
if(++counter == len) {
res.send(data);
}
});
});
});
どのように解決するのですか?
このように、完全なモデルインスタンスではなく、プレーンな JS オブジェクトが欲しい場合については、以下のように呼び出すことができます。
lean()
をクエリチェーン上で呼び出すことができます。
Survey.findById(req.params.id).lean().exec(function(err, data){
var len = data.survey_questions.length;
var counter = 0;
_.each(data.survey_questions, function(sq){
Question.findById(sq.question, function(err, q){
sq.question = q;
if(++counter == len) {
res.send(data);
}
});
});
});
このように
data
はすでにプレーンなJSオブジェクトであり、必要なように操作することができます。
関連
-
[解決済み】「安全なTLS接続が確立される前にクライアントのネットワークソケットが切断されました」(ノード10
-
[解決済み】AWS Lambdaでnodejsの「ref」モジュールを使用すると「invalid ELF header」と表示される件
-
[解決済み】passport.js passport.initialize() ミドルウェアが使用されていません。
-
[解決済み】Mongooseで配列の値を更新する方法
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み】AWS lambda function エラー - モジュール 'index' をインポートできません。エラー
-
[解決済み] npm install エラー - ローカルの発行者証明書を取得できません。
-
[解決済み] ReferenceError: describe は定義されていません NodeJs
-
[解決済み] npm not able to find a fileに関連するエラーは何が原因でしょうか?node_modules サブフォルダ内にコンテンツがありません。なぜでしょうか?
-
[解決済み] なぜmongooseはいつもコレクション名の最後にsをつけるのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node.jsのエラーECONNRESETをデバッグするにはどうすればよいですか?
-
[解決済み] (node:63208) DeprecationWarning: collection.ensureIndex は非推奨です。代わりにcreateIndexesを使用してください [重複]。
-
[解決済み】モジュール '@babel/core' が見つかりません。
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み】AWS lambda function エラー - モジュール 'index' をインポートできません。エラー
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] E: npm パッケージを見つけることができません。
-
[解決済み] Npmエラー - Windows NT - 解決方法
-
[解決済み] Express.js req.bodyが未定義です。
-
[解決済み] エラー: ノード出力を "|head" にパイプするときに EPIPE を書き込む。