Firebase admin sdk 调用错误捕获
Firebase admin sdk calling the wrong catch
我正在尝试使用 firebase-admin
添加新用户,然后在自定义集合中保存新文档。
示例代码如下:
admin.auth().createUser(user)
.then((record) => {
user.uid = record.uid;
userCollection.doc(record.uid).set({...user})
.then(writeResult => {
resolve();
})
.catch(reason => {
reject(reason)
});
})
.catch((err) => {
reject(err);
});
问题是,如果 userCollection.doc(record.uid).set({...user})
失败,我希望调用嵌套的 catch(以 reason
作为参数)。相反,总是调用外部的(使用 err
作为参数)。
是SDK有问题还是我做错了什么?
谢谢
这是因为您没有 return userCollection.doc(record.uid).set()
的承诺 return,因此您没有 return return 的承诺通过随后的 then()
和 catch()
方法。换句话说,你不 return promises chain。
但是,实际上,您应该按如下方式链接您的 Promise,避免 then()/catch()
金字塔。
admin
.auth().createUser(user)
.then((record) => {
user.uid = record.uid;
return userCollection
.doc(record.uid)
.set({ ...user })
})
.catch((err) => {
// Here you catch the potential errors of
// the createUser() AND set() methods
console.log(JSON.stringify(err));
});
我正在尝试使用 firebase-admin
添加新用户,然后在自定义集合中保存新文档。
示例代码如下:
admin.auth().createUser(user)
.then((record) => {
user.uid = record.uid;
userCollection.doc(record.uid).set({...user})
.then(writeResult => {
resolve();
})
.catch(reason => {
reject(reason)
});
})
.catch((err) => {
reject(err);
});
问题是,如果 userCollection.doc(record.uid).set({...user})
失败,我希望调用嵌套的 catch(以 reason
作为参数)。相反,总是调用外部的(使用 err
作为参数)。
是SDK有问题还是我做错了什么?
谢谢
这是因为您没有 return userCollection.doc(record.uid).set()
的承诺 return,因此您没有 return return 的承诺通过随后的 then()
和 catch()
方法。换句话说,你不 return promises chain。
但是,实际上,您应该按如下方式链接您的 Promise,避免 then()/catch()
金字塔。
admin
.auth().createUser(user)
.then((record) => {
user.uid = record.uid;
return userCollection
.doc(record.uid)
.set({ ...user })
})
.catch((err) => {
// Here you catch the potential errors of
// the createUser() AND set() methods
console.log(JSON.stringify(err));
});