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 回答