0

と の両方を含む無名関数を含む関数に渡そうとしproductています。残念ながら、この関数全体が反復内で実行され、最初の値のみが入力されます。find().toArray()errorarrayfind()productcallbacks

var find = function(product,callbacks){
    foos.find({
        "foo": product.bars,
    }).toArray(function (error, array) {
        if(error){
            callbacks.error(product,error);
        } else if (array.length == 0) {
            callbacks.none(product);
        } else {
            callbacks.exists(product);
        }
    });
}
4

1 に答える 1

0

この関数を処理する前productsforEach()、その中のコールバックでこれを実行しました。これは大変なことでした。productsレギュラーで処理され、for今では動作します。

古いコード

var products = function(data,callback){
    products.forEach(function(product){
        insert.product_id = product.id;
        var variants = product.variants;
        variants.forEach(function(variant){
            insert.sku = variant.sku;
            insert.variant_id = variant.id;
            return callback(insert);
        });
    });
}

新しいコード

var products = function(data){
    var insert = [];
    var products = data.products;
    for(var pKey in products){
        var product = products[pKey];
        var variants = product.variants;
        var set = {}
        set.product_id = product.id;
        for(var vKey in variants){
            var variant = variants[vKey];
            set.sku = variant.sku;
            set.variant_id = variant.id;
            insert.push(set);
        }
    }
    return insert;
}
于 2012-11-20T00:44:06.530 に答える