Mongodb findOne,但请先检查请求是否为空

userMod2

我正在使用Mongodb和findOne功能:

User.findOne({$or: [{email: req.body.email}, {mobile: req.body.mobile}]}

不过我现在面临的问题是req.body.emailreq.body.mobile-在某些情况下可以为空。

我最初使用以下方法解决了此问题:

var toSearchSmartString = {$or: [{email: req.body.email}, {mobile: req.body.mobile}]};
if (req.body.email.length == 0) {
    toSearchSmartString = {mobile: req.body.mobile};
} else if (req.body.mobile.length == 0) {
    toSearchSmartString = {email: req.body.email};
}

然后在findOne中,只需使用:

User.findOne(toSearchSmartString);

所以我想检查这个“安全”的事情吗?我问这样安全的原因是,如果我不为toSearchSmartString设置默认值,而是在if块的末尾(否则)设置它,则该字符串为'undefined'。

我担心在检查if else条件之前,findOne方法可能会使用默认的toSearchSmartString?我对此有权利吗?

另外,是否可以使用一些Mongodb函数来解决?

更新:因此,在下面的答案中有注释-代码有问题:

我通过将上面的var声明移动到它的使用位置来解决它。

var contWithRegCallback = function(err, user) {
          console.log(user);
        }

    if (req.body.email.length == 0) {
          User.findOne({mobile: req.body.mobile}, contWithRegCallback);
        } else if (req.body.mobile.length == 0) {
          User.findOne({email: req.body.email}, contWithRegCallback);
        } else {
          User.findOne({$or: [{email: req.body.email}, {mobile: req.body.mobile}]}, contWithRegCallback);
        }

即,回调函数中的用户不断返回未定义状态。它不应该是fineOne的内容吗?

Medet Tleukabiluly

您为什么不只使用条件检查?请注意,您希望通过电子邮件移动设备进行过滤,此简单的代码段应能按预期工作

var callback = function(err, result){
    if(err) {
        return res.status(400).send({message: 'Server error:' + JSON.stringify(err)});
    } else {
        res.json(result);
    }
}
if (req.body.email){
    User.findOne({email: req.body.email}, callback);    
} else if (req.body.mobile) {
    User.findOne({mobile: req.body.mobile}, callback);
} else {
    return res.status(400).send({message: "Email or Mobile required"});
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Mongodb findOne,但请先检查请求是否为空

来自分类Dev

检查ajax请求是否为空

来自分类Dev

Laravel 如何检查数据表ajax发送的请求是否为空

来自分类Dev

Golang,Heroku-如何检查请求是否为https

来自分类Dev

检查请求是否为获取并发布

来自分类Dev

MongoDB确定记录是否将通过findOne

来自分类Dev

WinJS检查xhr请求是否被取消

来自分类Dev

在ASP.NET Core中,如何检查请求是否为本地?

来自分类Dev

在haproxy卸载ssl环境中检查请求是否为ssl

来自分类Dev

MongoDB:管道阶段之间的空检查

来自分类Dev

MongoDB的findOne不起作用

来自分类Dev

MongoDB通过findOne加入集合

来自分类Dev

使用MongoDB检查字段是否存在

来自分类Dev

如何检查MongoDB与Java的连接是否建立?

来自分类Dev

检查mongodb中是否存在索引

来自分类Dev

检查MongoDB中的值是否匹配

来自分类Dev

MongoDB:检查嵌套键值对是否存在

来自分类Dev

检查mongodB中是否存在元素

来自分类Dev

mongodb java检查插入是否成功

来自分类Dev

检查mongodb中是否存在文档

来自分类Dev

MongoDB请求深场

来自分类Dev

Angular 组请求 mongodb

来自分类Dev

来自for循环的GET请求未推送到MongoDB,数据库仍然为空

来自分类Dev

MongoDB:$ all全部为空数组...

来自分类Dev

在InsertOneAsync之后,MongoDB id保持为空

来自分类Dev

Sonata / Symfony使用MongoDB过滤为空

来自分类Dev

mongodb includesTo外键为空

来自分类Dev

Mongodb:日志文件保持为空

来自分类Dev

如何检查与mongodb的连接