Q spread TypeError:undefined不是函数

时间:2016-07-15 07:18:53

标签: node.js q

exports.getOrder = function(id) {
    return getCache(id)
        .then(function(cache) {
            return [
                getCustomer(cache.customer),
                getInfo(cache.customer)
            ];
        })
        .spread(mergeData)
}

function mergeData(a, b) {
    return a;
}

为什么我使用传播获得类型错误的任何想法?这两个函数(getCustomergetInfo)都返回Q.Promise

编辑:

exports.getOrder = function(id) {
    return getCache(id)
        .then(function(cache) {
            return Q.all([getCustomer(cache.customer),getInfo(cache.customer)]);
        })
        .spread(mergeAuditData)
}

我也用这种方式测试了但没有成功和相同的结果。

EDIT2:

exports.getOrder = function(id) {
    return getCache(id)
        .then(function(cache) {
            return Q.all([
                getCustomer(cache.customer),
                getInfo(cache.customer)
            ]);
        })
        .then(function(a) {
            return a // contains: [[result Customer], [result Info]]
        })
        .catch(function(err) {
            console.log(err);
        })
}

EDIT3:

exports.getOrder = function(id) {
    return getCache(id)
        .then(function(cache) {
            return [
                getCustomer(cache.customer),
                getInfo(cache.customer)
            ];
        })
        .spread(function(a,b) {
            console.log(a);
            console.log(b);
            return a
        })
        .catch(function(err) {
            console.log(err);
        })
}

Edit4:

function getCache(id) {
    return Cache.findOne({id:id});
}

Edit5:

function getCache(id) {
    var query = Cache.findOne({id:id});
    return query.exec();

    //return Q(11061);
}

1 个答案:

答案 0 :(得分:0)

虽然我没有测试,但您可以尝试用

替换您的代码
module.exports.getOrder = function(id) {
return getCache(id)
    .then(function(cache) {
        return [
            getCustomer(cache.customer),
            getInfo(cache.customer)
        ];
    })
    .spread(function(a,b) {
        console.log(a);
        console.log(b);
        return a
    })
    .catch(function(err) {
        console.log(err);
    })
}