@Jason Cust すでにかなりよく説明されています-この状況では、多くの場合、最良の解決策は、Users
のクエリを防ぐためにスキーマを変更することです。 別のコレクションに保存されているドキュメントのプロパティによって。
これが私が考えることができる最善の解決策ですが、それはあなたにそれを強制することはありません(あなたはコメントであなたができないと言ったので)。
Users.find().populate({
path: 'email',
match: {
type: 'Gmail'
}
}).exec(function(err, users) {
users = users.filter(function(user) {
return user.email; // return only users with email matching 'type: "Gmail"' query
});
});
ここで行っているのは、email
のみを入力することです。 s一致する追加のクエリ(match
.populate()
のオプション 電話)-それ以外の場合はemail
Users
のフィールド ドキュメントはnull
に設定されます 。
残っているのは.filter
だけです 返されたusers
元の質問のように、配列-はるかに単純で非常に一般的なチェックのみを使用します。ご覧のとおり、email
あるか、ないか。