【发布时间】:2020-07-15 11:13:28
【问题描述】:
长话短说,我正在使用此函数来获取用户的唯一用户名,但它可能已经存在 - 在这种情况下,它应该再次运行,直到没有用户使用它。问题是当从内部再次调用时,该函数无法解析。该函数本身正在运行(它正在更新 mongodb 中的文档),但我无法获得序列号。我究竟做错了什么? 任何建议表示赞赏。
const getNextUsername = () => {
return new Promise((res, rej) => {
Counter.findByIdAndUpdate('usernames', {
$inc: {
sequence: 1
}
}, {
upsert: true,
new: true
}, (err, result) => {
if (err) rej(err);
User.findOne({
username: result.sequence
}, (err, u) => {
if (err) rej(err);
if (u) {
// if user with same username exists call the function again
// and here something fails
getNextUsername();
} else {
res(result.sequence);
}
})
})
})
}
如果这很重要,我会从另一个函数调用它并将其分配给带有 async/await 的 const。
const autoIncremented = await getNextUsername();
console.log(autoIncremented); // this actually never logs
【问题讨论】:
标签: javascript mongoose