如何在Firebase实时数据库插入记录前获取Push Key?
Firebase实时数据库插入带父ID的记录解决方案
要让插入的记录中messageId和父节点的Push Key一致,你可以先获取Push引用再写入数据,步骤如下:
先创建Push引用(不立即写入数据),此时就能拿到生成的唯一Key:
// 创建Push引用,生成Key但暂不写入 const messageRef = firebaseDb.ref('chat/' + state.userDetails.userId).push(); // 获取生成的Push Key const pushKey = messageRef.key;将Push Key添加到要插入的消息数据中:
// 把messageId设为生成的Push Key const messageData = { ...payload.message, messageId: pushKey };最后通过引用写入完整数据:
messageRef.set(messageData);
完整代码示例
// 1. 创建Push引用获取Key const messageRef = firebaseDb.ref('chat/' + state.userDetails.userId).push(); const pushKey = messageRef.key; // 2. 组装包含messageId的消息数据 const messageWithId = { ...payload.message, messageId: pushKey }; // 3. 写入数据库 messageRef.set(messageWithId);
原理很简单:Firebase的push()方法在不传数据调用时,只会生成一个带唯一Key的引用,不会立即写入数据。拿到这个Key后,把它加入到消息数据里,再用set()方法写入,就能保证messageId和父节点的Key完全一致。
内容的提问来源于stack exchange,提问作者Mostafa Asadi
相关产品推荐
相关产品推荐

