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》的作者,但即使是我也不能给你提供建议,因为我不清楚你在那里做什么。。。