【发布时间】:2019-02-13 09:40:31
【问题描述】:
我有一个用户列表,我正在检查所有用户的某些详细信息。我正在使用带有 express 的 sequelize js。我想知道我们可以使用这样的 while 循环来搜索和保存数据库中的数据。请帮助我。提前致谢。
let royalty_bonus = async (sponsor) => {
return await new Promise((resolve, reject) => {
models.RoyaltyUser.findById(sponsor)
.then(async (sponsorRow) => {
let user_level = 1;
let sponsor_id = sponsorRow;
try {
while (sponsor_id != null && user_level <= 3) {
let level_length = await getLevel(sponsor_id.id, user_level);
if (user_level === 1 && level_length.length === 3) {
console.log('Level One Achieved By ', sponsor_id.id);
} else if (user_level === 2 && level_length.length === 9) {
console.log('Level Two Is Achieved By ', sponsor_id.id);
} else {
console.log('No Level');
}
await models.RoyaltyUser.findOne({where: {id: sponsor_id.sId}})
.then((sponsor_new_row) => {
sponsor_id = sponsor_new_row;
})
.catch((e) => {
console.log(' Inner Catch Error ', e.message);
reject();
});
user_level++;
}
resolve();
}
catch (e) {
reject(e);
}
})
.catch((e) => {
reject('catch ', e.message);
});
});
};
router.get('/royalty_user', async (req, res, next) => {
royalty_bonus(4)
.then(() => {
console.log('done');
})
.catch((e) => {
console.log('Catch two', e.message);
})
});
【问题讨论】:
-
避免使用
Promiseconstructor antipattern!当你有async/await时避免使用then! -
究竟是什么不起作用?
-
这按预期工作。但我不确定这是否会在某些时候失败。我是新来表达的。我只想知道这种承诺执行是对还是错。
-
您在问题标题中询问的
while循环很好,其余的都很糟糕:-) -
你能告诉我如何删除可怕的东西吗? bcz 这超出了我的范围
标签: javascript express promise sequelize.js