繁体   English   中英

mongodb中哪种方式更合理?

[英]Which is a more reasonable way in mongodb?

有两种查询登录的方式,都是使用query once

let where = {
 username
};
//check username first
let result = await UserModel.findOne(where)
if (result != null) {
 if (result.password === password) {
  return done(null, result)
 } else {
  return done(null, false, 'wrong password')
 }
} else {
 return done(null, false, 'user does not exist')
}

let where = {
 username,
 password
};
//check username and password
let result = await UserModel.findOne(where)
if (result != null) { 
 return done(null, result)
} else {
 return done(null, false, 'wrong password or username')
}

哪个更好,为什么? 谢谢你。

问问自己这个问题。

let query = {
   matchValue: "someValue",
   someValue: { $gt: 1 },
   someOtherValue: { $gte: 1 }
}

const results = await model.findOne(query)

if (results) // do something

对比

let query = {
    matchValue: "someValue"
}

const results = await model.findOne(query);
if (results.someValue > 1 && results.someValue >== 1){
 ... do something.
}

如果检查可以通过 mongodb(性能更高)完成,为什么要在 javascript 中进行?

除了性能之外,您的两个逻辑都以相同的方式工作,并返回相同的结果。

无论结果是什么(无效的用户名密码),对前端的响应应该始终是“无效的用户名/密码”

好吧,根据我的说法,您应该首先询问用户名,如果与数据库匹配,那么我们应该询问密码。 如果您向用户询问用户名,您应该尽快验证该用户。 否则,用户可能会在他们的联系信息中输入错误,然后花费大量时间使用您的服务,但在他们下次尝试登录时却发现没有与他们的信息匹配的帐户。 如果没有人工干预,这些帐户通常是孤立的并且无法恢复。 更糟糕的是,联系信息可能属于其他人,将帐户的完全控制权交给了第三方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM