2017-08-04 74 views
0

我發誓我有這個工作,然後改變了一些東西,不能完全得到它。 我有了這段代碼明示控制器:異步等待沒有按預期等待

router.post('/', (req, res, next) => { 
    myModule.organizationLookup(req.body.domain).then((data) => { 
    res.status(200).send(data); 
    }) 
}); 

那麼我的問題代碼:myModule.js看起來是這樣的:

myModule.organizationLookup = (domain) => { 
    async function getOrganization(domain) { 
    try { 
     return await thirdpartySDK.Company.find({domain: domain}); 
    } 
    catch (err) { 
     console.log(err) 
    } 
    } 
    getOrganization(domain); 
}; 

它總是在控制器拋出一個錯誤: TypeError: Cannot read property 'then' of undefined

+1

這是因爲您沒有將任何內容返回給'organizationLookup',您在'getOrganization(domain)'內調用,但未返回該值。 – Gerardo

+0

另外,如果你要返回一個承諾,我也沒有看到使用'async/await'的意思。 – Gerardo

+0

實際代碼比較複雜,對本文過於簡單 – dylan

回答

1

你在這裏有一個多餘的功能,其結果你不return。只需刪除函數並寫入

myModule.organizationLookup = async function getOrganization(domain) { 
    try { 
    return await thirdpartySDK.Company.find({domain: domain}); 
    } catch (err) { 
    console.log(err) 
    } 
}; 
+0

你有一個你不參考的超級函數名稱! 'async(domain)=>'就足夠了。 – Crowes

+1

@Crowes右:-)我想也許出於某種原因,OP想要命名該函數(他說他的實際代碼更復雜)。 – Bergi