function return undefined,而不是 true/false boolean expr 调用时

function return undefined, instead of true/false boolean expr when calling

我想使用 Javascript NodeJs、Bookshelf...

检查 slug 是否已经存在

到目前为止,我的代码实际上不起作用:

var makeSlug = function (slug) {
    var baseSlug = slug;
    var i = 1;
    //console.log("RETURN: " +  slug_exists(slug));
    while (slug_exists(slug)) {
        slug = baseSlug + '-' + i;
        i++;
    }
    return slug;
};

var slug_exists = function (album) {
    new Album({slug: slugify(album)})
        .fetch()
        .then(function (album) {
            if (album) {
                console.log("trueee");
                return true;
            } else {
                console.log("falseee");
                return false;
            }
        });
};

在代码的某处,我将此函数称为 var newSlug = makeSlug('Endless River'); 似乎 slug_exists 函数不 return 我真的 eventhou 它打印 "trueee",因此 while 循环也不起作用...... 有什么建议,帮忙看看你会怎么做?

你不能 return 这样,在 promise 的回调内部(因为它将是 that 函数的 return,而不是外部一个).

既然你已经有了承诺,return 就让 makeSlug() 检查 then()

var slug_exists = function (album) {
    return new Album({slug: slugify(album)}).fetch();
};