Bluebird Promise 用风帆解决

Bluebird Promise resolve with sails

我正在尝试解析一个空数组:

function getAncestors(parentId) {
    return new Promise(function(resolve, reject) {
        if (!!parentId) {
            Category.findOne(parentId).then(function(parent) {
                parent.ancestors.push(parentId);
                resolve(parent.ancestors);
            }).catch(function(err) {
                reject(err);
            });
        } else {
            resolve([]);
        }
    });
};

它可以工作,但是当 resolve([]) 发生时,我的 sails 控制台最终记录未定义。

我做错了什么?

我建议重写为:

function getAncestors(parentId) {
    if (!!parentId) {
        return Category.findOne(parentId).then(function(parent) {
            parent.ancestors.push(parentId);
            return parent.ancestors;
        });
    } else {
        return Promise.resolve([]);
    }
};