通过id和email查找mongoose

3
我需要根据id或者email进行查找。输入可以是十六进制的objectId,也可以是一个合法的邮箱地址。
现在有一个简单的例子:
User.find({'$or': [{email: req.body.user}, {_id: req.body.user}]}, function(err, user){})

当通过电子邮件搜索时,由于电子邮件无法返回有效的objectId,因此会出现错误。

我该如何解决这个问题?我知道一个可能的方法是先检测输入是否为电子邮件,然后再进行查询,但是否有更好的方法呢?

1个回答

1
其实,这是最好的方法。在你的应用程序中首先检测输入的类型。如果是一个 ObjectId - 通过 _id 进行查询。如果是电子邮件 - 通过 email 进行查询。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接