gpt4 book ai didi

javascript - Sequelize 编写此代码的更好方法

转载 作者:行者123 更新时间:2023-12-01 03:52:42 26 4
gpt4 key购买 nike

我正在使用NodeJSsequelize。我的应用程序中有两种登录方式。一种是普通用户登录,一种是公司登录。

下面的代码首先在公司表中查找 token ,如果不存在,则移动到用户表中查找。

这样我就知道谁登录了系统。

有更好的方法吗?

或者

有没有一种方法可以让我同时在两个表中搜索,而不是等待 sequelize 在一个表中搜索,然后再搜索另一个表?

var token = req.get('Auth') || '';
db.token.findOne({
where:{
tokenHash: cryptojs.MD5(token).toString()
}
}).then(function(tokenInstance){
if(!tokenInstance){
throw new Error();
}
req.token = tokenInstance;
return db.company_auth.findByToken(token); //looks in the first table (company)
}).then(function(entity){
if(entity === null){
return db.user.findByToken(token); //if not found (then looks in the second table - user)
}else{
req.entity = entity;
next();
}
}).then(function(user){
req.user = user;
next();
}).catch(function(e){
console.log(e);
res.status(401).send();
});

TIA!

最佳答案

是的,您可以使用 Promise.all 轻松地同时搜索两个表并等待两个结果:

db.token.findOne({
where:{
tokenHash: cryptojs.MD5(req.get('Auth') || '').toString()
}
}).then(function(tokenInstance){
if (!tokenInstance)
throw new Error("found no token");

req.token = tokenInstance;
return Promise.all([
db.company_auth.findByToken(token), //looks in the first table (company)
db.user.findByToken(token) // also looks in the second table - user)
]);
}).then(function([entity, user]){
if (entity === null){
req.user = user;
} else {
req.entity = entity;
next();
req.user = undefined;
}
next();
}).catch(function(e){
console.log(e);
res.status(401).send();
});

关于javascript - Sequelize 编写此代码的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43042710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com