我正在撰寫一個 Typescript nodejs 應用程式,我想在其中迭代傳入的 sql 回應,但我不知道如何修復語法錯誤。
const getTicketPriceBrutto = async (eventID: number): Promise<number> => {
const rows: [] = await query(
`SELECT ticketPriceCentBrutto FROM events
WHERE eventID = '${eventID.toString()}';`
);
let price: number;
//syntax error...
// return rows.forEach((element: any) => {
// price = element.ticketPriceCentBrutto;
// return price;
// });
//here is also an syntax error
for (const iterator of rows) {
price = iterator.ticketPriceCentBrutto;
}
return price;
};
如何解決這個問題?
uj5u.com熱心網友回復:
你想要得到的最終結果是什么?一系列價格?如果是,則使用地圖:
const prices = rows.map((item: any) => item.ticketPriceCentBrutto)
此外,您的 for 型別在rows語法上不正確,它必須是一個陣列,如果您不知道回傳物件的確切形狀,請使用any[]而不是 just [],這也可能是語法無效的原因
uj5u.com熱心網友回復:
在您用來forEach迭代rows陣列的注釋區域中。但是 forEach 不回傳任何東西。這是使用 forEach 的正確方法。
const getTicketPriceBrutto = async (eventID: number): Promise<number[]> => {
const rows: [] = await query(
`SELECT ticketPriceCentBrutto FROM events
WHERE eventID = '${eventID.toString()}';`
);
const priceList: number[] = [];
for (const row of rows) {
price.push(row.ticketPriceCentBrutto);
}
return priceList;
};
另一種選擇是使用mapjavascript 提供的功能。
const getTicketPriceBrutto = async (eventID: number): Promise<number[]> => {
const rows: [] = await query(
`SELECT ticketPriceCentBrutto FROM events
WHERE eventID = '${eventID.toString()}';`
);
return rows.map(row => row.ticketPriceCentBrutto);
};
兩種方法都可以從getTicketPriceBrutto函式回傳一組價格
請檢查forEach和地圖以獲取更多資訊。
uj5u.com熱心網友回復:
像這樣的東西?
type Row = { ticketPriceCentBrutto: number };
const getTicketPriceBrutto = async (eventID: number): Promise<number | undefined> => {
const rows: Row[] = await query(
`SELECT ticketPriceCentBrutto FROM events
WHERE eventID = '${eventID}';`
);
return rows[0]?.ticketPriceCentBrutto;
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/514901.html
標籤:数组打字稿for循环循环
