对于Node API,我必须生成一个随机的字母数字键,这应该是唯一的,并且SHORT(我不能使用uuid或Mongo ObjectID)。如何使用Node.js处理while循环内的异步操作?
我觉得这样的逻辑:
- 生成密钥,
- 查询的MongoDB重点所有脑干
- 如果键存在,重复上述过程,
- 如果键不存在,其分配和回应客户。
我试过那么:
do {
key = randomKey(8);
newGroup.key = key;
Group.findOne({numberId: key}).then(function (foundGroup) {
console.log("cb");
if (! foundGroup) {
console.log("not found")
notUnique = false;
}
}).catch(function (err) {
return response.send(500);
});
} while (notUnique);
但是,只有我是一个无限循环,notUnique
是从未切换到true
。以防万一,这是针对empy数据库进行测试的。
我怎么能实现它?
你能生成很多密钥来测试吗?如果是这样,您可以使用$ in操作符批量查询它们。你可能会发现比你生成的密钥更少的对象,然后你只需检查一个密钥是否存在,而对应的对象不存在。 – laggingreflex