【问题标题】:Retrieving specific data from changing snapshot key从更改快照键中检索特定数据
【发布时间】:2016-02-14 17:39:05
【问题描述】:

我正在尝试从一个不断更新的孩子的 Firebase 数据中检索 JSON 数据。每次提交新数据时,快照键都会更改。 (使用 sparkpost 将数据发送到 firebase)。我正在尝试找出一种方法来构建我的检索结构,以便从最近的键中获取。

var ref = new Firebase("https://watspark.firebaseio.com/raw-events/");
var _url = ('https://watspark.firebaseio.com/raw-events/');


// Retrieve new posts as they are added to our database
ref.on("child_added", function(snapshot, prevChildKey) {
  var newPost = snapshot.val();
  console.log(snapshot.val());

  // console.log("text: "  + newPost.text);
  // console.log("Title: " + newPost.title);
  // console.log("Previous Post ID: " + prevChildKey);
  // var fireUrl = ("https://watspark.firebaseio.com/raw-events/" + snapshot.val() + "/0/msys/relay_message/content");
  //  var bigBoy = new Firebase(fireUrl);
  //   console.log("text: " + bigBoy.text);

  var param = snapshot.key();
  console.log(param);
});

ref.orderByChild("0/mysys/relay_message/content/text").on("child_added",   function(snapshot) {
  console.log(snapshot.key() + "was" + snapshot.val().text);
});

我的 JSON 数据结构如下:

   snapshot.val();
   {
     0 {
       mysys{
         relay_message{
           content

我该怎么做呢? 谢谢

【问题讨论】:

  • 这取决于您对“最新”的定义。当您查询填充了推送 ID 的列表时,您可以使用 ref.orderByKey().limitToLast(1) 获取最新信息。但请注意,这对于短列表可以正常工作,但随着列表的增长会变得越来越慢(参见thisthis)。如果您只关心最新项目,最好保留一个 `latestItemKey: "-Khasdgsagd" 并为您添加的每个新项目更新它。
  • 对,但我仍然很难将最新的项目密钥传递到 firebase URL,以便我可以将我的文本字段 3 级检索到我的 json 数据中

标签: node.js meteor firebase sparkpost


【解决方案1】:

我可以通过这样做给最近的孩子打电话:

ref.orderByKey().limitToLast(1).on("child_added", function(snapshot) {
  var child = snapshot.val();
  console.log(snapshot.key());
  var snapKey = '' + snapshot.key();

  snapshot.child("0/msys/relay_message/content/").forEach(function(snap){
    console.log('snap ' + snap.val());
    if(snap.key() === 'text'){
      watsonInput = snap.val();
    }
  });

  snapshot.child("0/msys/relay_message/").forEach(function(snap){
    console.log('email: ' + snap.val());
    if(snap.key() === 'msg_from'){
      email = snap.val();
    }
    //call to remove current snapshotKey
  });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 2018-12-09
    • 1970-01-01
    相关资源
    最近更新 更多