新手问题;我需要创建一个条件循环来调用数据库。 promise中返回的值确定我是否应该按如下方式退出循环:
let id, caged;
do {
caged = false;
id = models.Cage.generateId();
caged = models.Cage.findOne({ where: { dispatchLabelId: id } });
} while( caged );
有人可以建议我如何构建我的代码吗?
答案 0 :(得分:1)
你可以使用promises和递归函数调用来做到这一点:
let getCage = () => {
return models.Cage
.generateId()
.then(id => models.Cage.findOne({ where: { dispatchLabelId: id } }))
.then(caged => {
if (caged) {
return caged;
}
return getCage();
});
}
如果您可以使用node.js v7.6或更高版本,则可以避免使用递归函数调用并使用async/await
实现此目的:
let getCage = async () => {
try {
do {
let id = await models.Cage.generateId();
let caged = await models.Cage.findOne({ where: { dispatchLabelId: id } });
if (caged) {
return caged;
}
} while (true);
} catch (err) {
console.log(err);
}
}