簡體   English   中英

Map 對象數組並使用調用 API 的 function 更改一個屬性。 我一直在等待 promise

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM