環境
ユーザーが複数のフィールドに入力し、送信し、1 つのコレクションから一致するアイテムのリストを表示できるようにする検索機能を作成しようとしています。フロントエンドでフォームを使用してこれを行います。これにより、バックエンドでセッション変数が更新され、クエリとして mongodb コレクションに渡されます。
どのように機能するか
ユーザーが会場のサイズを送信すると、そのサイズの会場が表示されます。場所のみを入力すると、その場所内の会場が表示されます。サイズと場所の両方を送信すると、両方の条件に一致する会場が表示されます。
実際の仕組み
何も入力されていない場合は、検索を押すと、コレクション内のすべてのアイテムが表示されます。場所とサイズの両方を送信すると、両方の基準に一致する会場が得られます。ただし、1 つのフィールドだけを入力し、もう 1 つのフィールドを空のままにすると、 results に何も得られません。これはなぜなのか疑問に思っています。クエリが文字どおり '' を含むフィールドを検索しているように見えますが、両方のフィールドを空のままにしておくと、この動作が見られないのはなぜですか? 大変助かりました!
コードスニペット
//Search Form Helper
Template.managevenues.helpers({
venue: function () {
var venueNameVar = Session.get('venueNameVar');
var venueLocationVar = Session.get('venueLocationVar');
if(venueNameVar || venueLocationVar){
console.log(venueNameVar);
console.log(venueLocationVar);
return Venues.find({
venueName: venueNameVar,
'venueAddress.neighbourhood': venueLocationVar
});
} else {
return Venues.find({});
}
});