Firebase实时数据库Set方法完成回调无法捕获错误的问题求助
Firebase实时数据库Set方法完成回调无法捕获错误的问题求助
我在使用Firebase Admin SDK操作实时数据库时遇到了一个困惑已久的问题:set方法的完成回调完全没按预期捕获错误,程序遇到非法数据时直接崩溃终止,实在搞不懂哪里出了问题,希望能得到大家的帮助。
当我给set方法传入格式无效的数据(比如包含非法字符的键)时,程序会直接停止处理,就像遇到了未捕获的错误一样,我的函数无法正常返回结果,完全忽略了我设置的完成回调。
我的代码实现如下:
export async function set (seller) { const updates = {}; updates[ `sellers/12345/name-first` ] = seller.firstName; // 我既尝试过async/await写法,也试过then/catch的调用方式 return await database.ref().set(updates, error => { return error; }); };
不出意外的话,这段代码会抛出错误:Error: update failed: value argument contains an invalid key (sellers/12345/name-first),但问题在于我的函数根本不会返回这个错误,而是直接终止执行,就像处理未捕获错误时的表现一样。
我是按照Firebase官方文档中关于完成回调的说明来配置的,但似乎完全不起作用。我甚至把整个set调用放进了try-catch块中,也试过传入未定义的数据,但不管是非法键还是未定义值的情况,都没法让set方法按预期返回错误——只有当传入合法数据时,函数才能正常返回结果。
我现在有几个核心疑问:
- 如果完成回调无法捕获非法键或未定义数据这类错误,那它到底能捕获哪些类型的错误?
- 更关键的是,如果连
try-catch都无法捕获这些错误,我该如何处理它们?
我感觉自己肯定漏掉了某个关键的知识点,实在想不通问题出在哪里。
我的运行环境版本如下:
express 4.21Node.js 22.11.0firebase-admin 13.0.1
备注:内容来源于stack exchange,提问作者tukool
相关产品推荐
相关产品推荐

