【问题标题】:Firebase admin SDK database update returns undefinedFirebase 管理员 SDK 数据库更新返回未定义
【发布时间】:2021-12-24 23:27:06
【问题描述】:

我正在使用 Firebase Admin SDK 更新我的数据库,如下所示:

admin.database().ref(`clients/${id}`).update({name: 'name'})
.then(snapshot => console.log(snapshot))

但是,它会记录 undefined。任何想法为什么会这样?

"firebase-admin": "^9.12.0"

【问题讨论】:

    标签: node.js firebase firebase-realtime-database


    【解决方案1】:

    这是因为 update() 方法返回的 Promise 不包含您刚刚更新的节点的快照。

    需要重新查询RTDB获取节点的值,如下:

    const dbRef = admin.database().ref(`clients/${id}`);
    dbRef.update({name: 'name'})
    .then(() => {
       return dbRef.get();
    })
    .then(snapshot => {
       console.log(snapshot.val());
    })
    

    【讨论】:

    • 谢谢! set 方法会返回快照吗?因为我使用set 方法对其进行了测试,它也返回undefined,但仅在我set 在数据库中的现有条目上的情况下;如果我用set 创建一个新对象,它确实会返回节点的快照。这是设计使然吗?
    • 我不认为 set() 方法返回一个非 void Promise。我目前无法对其进行测试,但我认为其行为与 update() 方法相同。
    • 你是对的。我在我的代码中发现了一个误报,这让我认为set() 实际上返回了一个对象。经过进一步测试,我无法重现。感谢您的见解! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 2019-03-14
    • 1970-01-01
    • 2019-12-28
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多