javascript - 如何从push() firebase中提取id?

标签 javascript firebase firebase-realtime-database

有人可以解释一下为什么 firebase 唯一 id 以“-”开头吗?

我有两个问题:

如果此请求有任何返回,我如何从推送中获取 id?

firebase.database().ref('carts/-KJp9LdQkEN1DtuCLjfP/pro').push({
  name:name,
  amount:am
});

在这部分我正在尝试处理回调快照。我从这个 json 中提取数据的所有尝试都失败了。

JSON.parse(data) == error
snapshot.key(); == error
data[0] == error

firebase.database().ref('carts/').on('value', function(snapshot) {
  var data = snapshot.val();
  console.log(data);
});

最佳答案

这些键(通常称为“push ids”)以 - 开头,因为这是用于生成它们的字典中的第一个字符。看这个blog post explaining how they are generated .

如果您尝试获取要添加的项目的推送 ID,您可以这样做:

var newRef = firebase.database().ref('carts/-KJp9LdQkEN1DtuCLjfP/pro').push();
console.log(newRef.key);
newRef.set({
  name:name,
  amount:am
});

如果你想确定监听器中某个项目的键,你可以这样做:

firebase.database().ref('carts/').on('value', function(snapshot) {
  console.log(snapshot.key); // carts
  var data = snapshot.val();
  console.log(data);
});

如果您正在倾听 child 的声音,则更有可能通过以下方式获得 key :

firebase.database().ref('carts/').on('child_added', function(snapshot) {
  console.log(snapshot.key); // -KJ....
  var data = snapshot.val();
  console.log(data);
});

或者像这样:

firebase.database().ref('carts/').on('value', function(snapshot) {
  snapshot.forEach(function(cartSnapshot) {
    console.log(cartSnapshot.key); // -KJ....
    console.log(cartSnapshot.val());
  });
});

关于javascript - 如何从push() firebase中提取id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37733456/

相关文章:

javascript - 为什么这个 JavaScript 不工作?

android - Firestore runTransaction() 和离线工作

swift - 如何使用 DispatchGroup/GCD 在 swift 中顺序执行函数?

android - 在 Firebase UI 中开始监听

ios - 如何在 flutter 中降级包?

Firebase 数据库规则 - 获取显示名称

JavaScript 字段继承奇怪的行为

javascript - grunt-ng-constant 不生成配置脚本

javascript - 将传单中的自定义图标添加到 geojson 文件

javascript - 在foreach函数之外访问$scope Angular js Firebase