gpt4 book ai didi

javascript - 在 Javascript/NodeJs 中无需链接代码的多个数据库调用

转载 作者:行者123 更新时间:2023-11-30 12:16:02 27 4
gpt4 key购买 nike

我使用 NodeJS 和 express 已经有一段时间了,但我似乎无法解决这个问题。

在我要展示的产品页面上

1) 产品

2) 关联产品

我希望能够重用这段代码,理想情况下我会写成这样

/* Function to get info */

function getProduct($id){
//Finds the product info from postgres with all information and returns it.
}

function getRelatedProducts($id){
//Finds related products from postgres and returns it.
}

/* Routing */
router.get('/:id', function(req, res, next) {
var product = getProduct(req.params.id);
var relatedProducts = getRelatedProducts(req.params.id);
res.render('product', { item: product, related: relatedProducts });
});

如您所料,这不起作用,因为代码在它有时间返回 productrelatedProducts 之前命中 res.render .

现在我有几种方法可以解决这个问题,但我想知道实现这个的最佳模式/方法是什么。这样我就不必再重现代码了。

如果上面的某些内容没有意义,请告诉我!非常感谢(来自 JS 新手!)

最佳答案

最佳 模式是有争议的,但一种解决方案是使用 promise 。在每个通过 ID 获取产品/相关产品的函数中,您将返回一个在查询完成时解析的 promise 。然后,当这两个 promise 都得到解决时,您将进行渲染。

var productPromise = getProduct(req.params.id);
var relatedProductsPromise = getRelatedProducts(req.params.id);
Promise.all([productPromise, relatedProductsPromise]).then(
function (product, relatedProducts) {
res.render('product', { item: product, related: relatedProducts });
}
);

关于javascript - 在 Javascript/NodeJs 中无需链接代码的多个数据库调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32404993/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com