所以我需要通过身份证或电子邮件进行查找。输入可以是objectId,作为十六进制字符串或有效的电子邮件。
现在很简单
User.find({'$or': [{email: req.body.user}, {_id: req.body.user}]}, function(err, user){})
在通过电子邮件搜索时抛出错误,因为电子邮件无法返回有效的objectId。
我如何克服这个?我知道一种可能的方法是首先检测输入是否是电子邮件,然后查询它,但是有更好的方法吗?
答案 0 :(得分:0)
实际上,这是最好的方法。在您的应用程序中,首先检测您有什么样的输入。如果是ObjectId
- _id
的查询。如果是电子邮件 - 按email
查询。