2

そのため、IDまたはメールで検索する必要があります。入力は、16 進文字列としての objectId または有効な電子メールにすることができます。

今はシンプル

User.find({'$or': [{email: req.body.user}, {_id: req.body.user}]}, function(err, user){})

電子メールが有効な objectId を返さないため、電子メールで検索するとエラーがスローされます。

どうすればこれを乗り越えられますか? 入力が電子メールかどうかを最初に検出してから、そのようにクエリを実行する方法があることはわかっていますが、より良い方法はありますか?

4

1 に答える 1

0

実際、それが最善の方法です。アプリケーションでは、まずどのような種類の入力があるかを検出します。ObjectId- によるクエリの場合_id。メールの場合 - で問い合わせてemailください。

于 2012-04-08T10:30:44.130 に答える