函数返回undefined,而不是调用时的true / false boolean expr

时间:2015-01-05 00:50:03

标签: javascript node.js

如果已经存在使用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函数不会返回我的真实事件它打印“trueee”,因此while循环也不起作用... 任何建议,帮助你怎么做?

1 个答案:

答案 0 :(得分:1)

你不能在承诺的回调中回复(因为 函数的return,而不是外部函数)。

由于您已经有了承诺,请将其退回并让makeSlug()检查then()

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