如何使用pg-promise?

时间:2017-04-04 05:31:20

标签: node.js pg-promise

我有一个场景,我以下面的方式使用'async'库。

async.series([function (cb) {
            dbWeb.saveOrderForm(chain.toString(), function (err, data)  {
                if (err) {
                    cb(err);
                } else {
                    req.order_id = data;
                    cb();
                }
            });
        }, function (cb) {
            async.parallel([function (cbForm) {
                async.eachSeries(formats, function (format, cbFormat) {
                    let resource = {
                        set: {
                            format_id: format,
                            order_id: req.order_id
                        }
                    };
                    let chain = sql.insert({ separator: '\n' }).into('order_format');
                    sqlify(chain, resource);
                    dbWeb.saveArray(chain.toString(), function (err) {
                        if (err) {
                            cbFormat(err);
                        } else {
                            cbFormat();
                        }
                    });
                }, function (err) {
                    if (err) {
                        cbForm(err);
                    } else {
                        cbForm();
                    }
                });
            }, function (cbForm) {
                async.eachSeries(designStyle, function (design, cbDesign) {
                    let resource = {
                        set: {
                            design_style_id: design,
                            order_id: req.order_id
                        }
                    };
                    let chain = sql.insert({ separator: '\n' }).into('order_design_style');
                    sqlify(chain, resource);

                    dbWeb.saveArray(chain.toString(), function (err) {
                        if (err) {
                            lme.e(err);
                            cbDesign(err);
                        } else {
                            cbDesign();
                        }
                    });
                }, function (err) {
                    if (err) {
                        cbForm(err);
                    } else {
                        cbForm();
                    }
                });
            }, function (cbForm) {
                async.eachSeries(fabrics, function (fabric, cbFabric){
                    let resource = {
                        set: {
                            fabric_id: fabric,
                            order_id: req.order_id
                        }
                    };
                    let chain = sql.insert({ separator: '\n' }).into('order_fabric');
                    sqlify(chain, resource);
                    dbWeb.saveArray(chain.toString(), function (err) {
                        if (err) {
                            cbFabric(err);
                        } else {
                            cbFabric();
                        }
                    });
                }, function (err){
                    if (err) {
                        cbForm(err);
                    } else {
                        cbForm();
                    }
                });
            }, function (cbForm) {
                async.eachSeries(locaion, function (loc, cbLoc){
                    let resource = {
                        set: {
                            location_id: loc,
                            order_id: req.order_id
                        }
                    };
                    let chain = sql.insert({ separator: '\n' }).into('order_location');
                    sqlify(chain, resource);
                    dbWeb.saveArray(chain.toString(), function (err) {
                        if (err) {
                            cbLoc(err);
                        } else {
                            cbLoc();
                        }
                    });
                }, function (err){
                    if (err) {
                        lme.e(err);
                        cbForm(err);
                    } else {
                        cbForm();
                    }
                });
            }, function (cbForm) {
                async.eachSeries(priceTypes, function (price, cbPrice){
                    let resource = {
                        set: {
                            order_pricing_sub_id: price,
                            order_id: req.order_id
                        }
                    };
                    let chain = sql.insert({ separator: '\n' }).into('order_price_types');
                    sqlify(chain, resource);

                    dbWeb.saveArray(chain.toString(), function (err) {
                        if (err) {
                            cbPrice(err);
                        } else {
                            cbPrice();
                        }
                    });
                }, function (err){
                    if (err) {
                        cbForm(err);
                    } else {
                        cbForm();
                    }
                });
            }, function (cbForm) {
                async.eachSeries(logos, function (logo, cbLogo){
                    let resource = {
                        set: {
                            logo_used_id: logo,
                            order_id: req.order_id
                        }
                    };
                    let chain = sql.insert({ separator: '\n' }).into('order_logo_used');
                    sqlify(chain, resource);

                    dbWeb.saveArray(chain.toString(), function (err) {
                        if (err) {
                            cbLogo(err);
                        } else {
                            cbLogo();
                        }
                    });
                }, function (err){
                    if (err) {
                        cbForm(err);
                    } else {
                        cbForm();
                    }
                });
            }
            ], function (err) {
                if (err) {
                    cb(err);
                } else {
                    cb();
                }
            });
        }
        ], function (err) {
            if (err) {
                res.status(500).json({
                    status: 'Something went wrong while trying to access data from database',
                    msg: err
                });
            } else {
                res.status(200).send({
                    status: 'success'
                });
            }
        });

这是整个代码,在第一个async.series函数中我必须保存'order'。然后我需要那个id来执行'function(cb)'中的所有函数,这些函数可以并行完成。但是在每个并行函数中,我都要做async.eachSeries。

这是当前的情况。代码感觉太乱了。抱歉给你带来不便。

如何使用pg-promise函数实现它?

0 个答案:

没有答案