[英]I am requesting data from an API. Currently, I am getting data as an array of objects but I'm not able to render output on the browser
[英]Map array of objects and change one property with a function that calls an API. I keep getting promise pending
我必須遍歷一組對象並修改每個 object 中的一個屬性。 我使用連接到 Twitter API 的 function 修改此屬性。 我的問題是我必須錯誤地使用異步和等待,因為我正在等待 promise。
這是我的代碼:
getProfile:(req,res)=>{
try {
const userId=req.params.id
const profile=db.query('SELECT * FROM profiles WHERE user_id=?',
[userId],async (err,result)=>{
if(err) return res.status(404).send(err)
const profiles= await result.map( obj=>{
const container={}
container['name']=obj.profile_name
container['desc']=obj.profile_desc
container['twitter']= connectTwitt.getTwitt(obj.twitt)//calls to api
return container
})
console.log(profiles)// promise pending
res.send(profiles)
這是我正在映射的 object 數組的結構:
[
{profile_name:`Elon Musk`, profile_desc:'enterpreneur',twitt:636465}
]
是的,您使用async
/ await
語法有點不正確。
現在,您正在Array.map()
方法上調用await
。 但是,該方法不是基於承諾的。
相反,您必須將await
關鍵字添加到getTwitt()
方法。
通過這些更改,它應該如下所示。
const profiles = result.map((obj) => { // This line has been modified const container = {}; container["name"] = obj.profile_name; container["desc"] = obj.profile_desc; container["twitter"] = await connectTwitt.getTwitt(obj.twitt); // This line has been modified. return container; });
希望這對您的<pending>
問題有所幫助!
問候, Arnav Thorat
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.