我有以下更新我的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'});
}
})
答案 0 :(得分:1)
db.collection('Users').doc(doc.id).update()
返回一个承诺,您的代码将忽略它。 HTTP类型函数应仅在所有异步调用完全完成后才返回结果。在整个过程中进行尝试/捕获将无济于事。