有人可以解释这个递归函数MongooseJS

时间:2014-11-24 15:22:57

标签: javascript mongodb recursion mongoose

我看过this函数。

我可以看到它会产生一个slu ,,但我不太明白它是如何工作的。 在行327上它从Model.findOne函数返回promise,但在该Model.findOne函数的回调中,它们递归地再次调用从行321开始的外部函数。

任何人都可以帮助我吗?我需要生成一些独特的slu ,,这似乎是一个解决方案 - 如果我能理解它。

1 个答案:

答案 0 :(得分:0)

示例中的

checkIfSlugExists函数确保数据库中没有slugToFind slug的文档。

checkIfSlugExists不仅仅是检查slug是否空缺,而且还有一些故障转移机制。所以,最终它会向空置的slug返回一个承诺:

  1. 如果slugToFind不存在于数据库中,则会返回(行331)。
  2. 否则checkIfSlugExists会检查longSlug(行338-341),这只是原始slugToFind的较长版本。
  3. 如果已经采用了slugToFindlongSlug,则checkIfSlugExists开始向longSlug(行344-355)添加数字,从2开始,直到找到一个空的slu ..
  4. 每次checkIfSlugExists想要检查一些新的slug时,它会递归调用自己的新值。