[解決済み] Mongoose の .populate() で特定のフィールドを返す
2022-11-18 07:01:52
質問
クエリを実行した後、MongoDBからJSONの値が返されます。問題は、私の戻り値に関連するすべてのJSONを返したくないということです。ドキュメントを検索してみましたが、これを行う適切な方法を見つけられませんでした。 もし可能であれば、どのような方法があるのでしょうか?例 DBで
{
user: "RMS",
OS: "GNU/HURD",
bearded: "yes",
philosophy: {
software: "FOSS",
cryptology: "Necessary"
},
email: {
responds: "Yes",
address: "[email protected]"
},
facebook: {}
}
{
user: "zuckerburg",
os: "OSX",
bearded: "no",
philosophy: {
software: "OSS",
cryptology: "Optional"
},
email: {},
facebook: {
responds: "Sometimes",
address: "https://www.facebook.com/zuck?fref=ts"
}
}
あるユーザーに対してフィールドが存在し、それが存在しない場合は別のフィールドを返すには、どのような方法が適切でしょうか。 上記の例では、私は
[email][address]
フィールドを返し、RMS の
[facebook][address]
のフィールドをZuckerburgに追加しました。 このように、フィールドがNULLの場合に検索することを試してみましたが、うまくいかないようです。
.populate('user' , `email.address`)
.exec(function (err, subscription){
var key;
var f;
for(key in subscription){
if(subscription[key].facebook != null ){
console.log("user has fb");
}
}
}
どのように解決するのですか?
フィールドを返すというのがどういう意味なのか、完全には理解できていないのですが、例えば、quot:return a field" のように
lean()
クエリを使用して、出力を自由に変更できるようにし、両方のフィールドに入力し、結果を後処理して必要なフィールドのみを保持することができます。
.lean().populate('user', 'email.address facebook.address')
.exec(function (err, subscription){
if (subscription.user.email.address) {
delete subscription.user.facebook;
} else {
delete subscription.user.email;
}
});
関連
-
[解決済み] jQueryでJavaScriptオブジェクトから選択する際に、オプションを追加する最も良い方法は何ですか?
-
[解決済み] FlaskのビューからJSONレスポンスを返す
-
[解決済み】Mongoose: findOneAndUpdateが更新されたドキュメントを返さない
-
[解決済み] mongodb/mongoose findMany - 配列にリストされたIDを持つすべてのドキュメントを検索する。
-
[解決済み】Node.jsでMongooseを使用してページングする方法は?
-
[解決済み】Mongoose がサブドキュメントの配列アイテムに _id プロパティを作成しないようにする
-
[解決済み】mongooseスキーマにcreated_atとupdated_atフィールドを追加する
-
[解決済み] mongoose でネストした配列に値を入れる
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] 保存後のMongooseのポップアップ
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する
-
[解決済み] <ng-content>が空かどうかを確認する方法は?(これまでのAngular 2+で)
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)