Node.js 如何使用pg承诺?

Node.js 如何使用pg承诺?,node.js,pg-promise,Node.js,Pg Promise,我有一个场景,其中我以如下方式使用了“异步”库 async.series([function (cb) { dbWeb.saveOrderForm(chain.toString(), function (err, data) { if (err) { cb(err); } else { req.order_id = data;

我有一个场景,其中我以如下方式使用了“异步”库

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函数实现它?

为什么不给函数命名,而不是让它们成为匿名函数?以这种方式提出解决方案很容易。我是《pg promise》的作者,但即使是我也不能给你提供建议,因为我不清楚你在那里做什么。。。