打字稿承诺必须正确处理

时间:2019-11-17 04:27:46

标签: typescript promise google-cloud-firestore

我有以下更新我的Firestore文档的方法。但是有一个错误说承诺必须正确处理。我已经在函数中添加了try catch。任何人都可以建议我错过的其他内容吗?

export const updateCustomer = functions.https.onRequest(async (req, resp) => {
    try
    {
            await db.collection('Users').where('CompanyId', '==', req.body.CompanyId)
            .where('CustomerId', '==', req.body.CustomerId)
            .get()
            .then(snapshot => {   
                 snapshot.forEach(doc => 
                     {
                         db.collection('Users').doc(doc.id).update(
                             {
                                 CustomerName : req.body.CustomerName,
                                 MobileNo : req.body.MobileNo,
                                 DOB: req.body.DateOfBirth,
                                 Email : req.body.Email,
                                 PreferredLanguage: req.body.PreferredLanguage
                             }
                         )
                     })
            })
            .catch(error => resp.status(500).send(error));   



       resp.status(200).send(req.body);
    }
    catch(error)
    {
       console.error(error);
       resp.status(500).send({ Message: error, StatusCode: '500', Status: 'Error'});
    }
})

1 个答案:

答案 0 :(得分:1)

db.collection('Users').doc(doc.id).update()返回一个承诺,您的代码将忽略它。 HTTP类型函数应仅在所有异步调用完全完成后才返回结果。在整个过程中进行尝试/捕获将无济于事。