MongoDBを使って,検索条件を絞るチェックリストを作りました.
具体的には就活サイトを練習で開発中でして,面接の問題を出力するサイトを構築しております.
検索条件は3パターンあって,
ジャンルを絞る 10種類ほど
年度を絞る 10種類ほど
選考会を絞る 2種類
これらの機能をつけたいです.
JSONでJQueryから
{genre : "IT" , genre : "メーカー"}
のようにチェックリストを追加していくと,JSON形式で溜め込まれて行きます.
これらを
genre ->G
年度 -> Y
選考 -> W
として,
JS
1refine(G,Y,W){ 2 let pr = new Promise(function(resolve, reject){ 3 MongoClient.connect(url, { useNewUrlParser: true },function(err, db) { 4 5 if (err) throw err; 6 let dbo = db.db(account); 7 8 let query ={ $and : [ 9 { $or : G }, 10 { $or : Y }, 11 { $or : W } 12 ]} 13 dbo.collection("question").find(query).toArray(function(err, result) { 14 if (err) throw err; 15 resolve(result) ; 16 console.log(result) 17 db.close(); 18 }); 19 }); 20 }); 21 return pr; 22 } ;
のようにメソッドに渡しています.
一見問題なく動作をするのですが,
1パターンでもチェックを付けないと,
err
12019-09-17T14:05:52.161829+00:00 app[web.1]: /app/node_modules/mongodb/lib/utils.js:133 22019-09-17T14:05:52.161832+00:00 app[web.1]: throw err; 32019-09-17T14:05:52.161835+00:00 app[web.1]: ^ 42019-09-17T14:05:52.161837+00:00 app[web.1]: 52019-09-17T14:05:52.161839+00:00 app[web.1]: MongoError: $and/$or/$nor must be a nonempty array 62019-09-17T14:05:52.161841+00:00 app[web.1]: at Connection.<anonymous> (/app/node_modules/mongodb/lib/core/connection/po 7ol.js:466:61) 82019-09-17T14:05:52.161843+00:00 app[web.1]: at Connection.emit (events.js:198:13) 92019-09-17T14:05:52.161845+00:00 app[web.1]: at processMessage (/app/node_modules/mongodb/lib/core/connection/connection 10.js:364:10) 112019-09-17T14:05:52.161847+00:00 app[web.1]: at Socket.<anonymous> (/app/node_modules/mongodb/lib/core/connection/connection 12
のようにエラーが出てしまいます.
MongoError: $and/$or/$nor must be a nonempty array
を翻訳すると,空白の配列を作るなと怒られています.
しかし,検索の場合には,空白になるパターンになってしまうので,
どうすれば良いかわからない状況です.
試した事 : エラーで検索してもピンとくる答えが得られませんでした.
一番最初に出てくるリンクを読んでみても解決出来ず...
なぜ空白なのに throw err をしてしまうのでしょうか?
是非皆さんのお力をお貸しください.

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/21 12:06