gpt4 book ai didi

mysql - Node.js 异步从数据库获取数据

转载 作者:行者123 更新时间:2023-12-02 19:05:04 25 4
gpt4 key购买 nike

我正在创建一个 API,它可以在一个 json 对象中获取产品对象以及该产品的变体。

我正在使用此代码来获取产品:

const pool = require("../../config/db");

module.exports = {
getProductById: (id, callBack) => {
pool.query(
`SELECT
p.id,
p.name,
p.description,
b.id as brand_id,
b.name as brand_name
FROM product p
INNER JOIN brand b ON p.brand_id = b.id
WHERE p.id = ?`,
[
id
],
(error, results, fields) => {
if (error) {
return callBack(error);
}

// This is where I would like to call the getProductById
// function so that I can add the array to the below
// productObject

var productObject = {
id: results[0].id,
name: results[0].name,
description: results[0].description,
brand: {
id: results[0].brand_id,
name: results[0].brand_name
}
};

return callBack(null, productObject)
}
)
}
};

我想从我已经创建的 api 函数中获取产品变体,如下所示:

const pool = require("../../config/db");

module.exports = {
getProductVariantsById: (id, callBack) => {
pool.query(
`SELECT *
FROM product_variants
WHERE product_id = ?`,
[
id
],
(error, results, fields) => {
if (error) {
return callBack(error);
}

return callBack(null, productObject)
}
)
}
};

我正在努力在 getProductVariantsById 函数中异步调用 getProductVariantsById 函数。

我尝试过使用 promise ,但我无法做到正确。 This这就是我试图做的。

我怎样才能实现这个目标?

最佳答案

如果你的 pool.query 是异步的,你可以使用 wait 运行

getProductById: async (id, callBack) => {
...
await getProductVariantsById(id, callback);
}
getProductVariantsById: async (id, callBack) => {
...
await pool.query(...);
...
}

如果不是异步,要使用 Promise,你需要像这样的 smt

getProductVariantsById: async (id, callBack) => {
return new Promise((resolve) => {
pool.query(..)
...
resolve();
}
}

关于mysql - Node.js 异步从数据库获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65169965/

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