Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
所以我需要通过 id 或电子邮件进行查找。输入可以是作为十六进制字符串的 objectId 或有效的电子邮件。
现在一个简单的
User.find({'$or': [{email: req.body.user}, {_id: req.body.user}]}, function(err, user){})
通过电子邮件搜索时抛出错误,因为电子邮件无法返回有效的 objectId。
我该如何克服呢?我知道一种可能的方法是首先检测输入是否是电子邮件,然后像这样查询它,但是有更好的方法吗?
实际上,这是最好的方法。在您的应用程序中首先检测您有什么样的输入。如果是ObjectId- 查询_id。如果是电子邮件 - 通过 查询email。
ObjectId
_id
email