小编Kat*_*ato的帖子

检测Firebase连接是否丢失/重新获得

是否有一种策略可以在当前的Firebase产品中运行,以检测服务器连接是否丢失和/或重新获得?

我正在考虑移动设备的一些离线意外事件,我想要一种可靠的方法来确定Firebase数据层何时可用.

firebase

60
推荐指数
3
解决办法
4万
查看次数

在Firebase中创建一个空的子记录

我正在尝试使用Firebase数据视图创建一个孩子,但似乎这是不可能的,因为创建节点直接消失或者不会在任何时间显示.我试图将值字段留空,但这根本不起作用以及将null写入值字段.我做错了吗?

-Fabian

firebase

27
推荐指数
1
解决办法
1万
查看次数

Firebase中对阵列的异步访问

这是我的代码:

var userRef = new Firebase("https://awesome.firebaseio.com/users/");

var tokenRef = userRef.child(key+'/tokens');
tokenRef.once('value', function(snapshot){

  var userTokenSync = $firebase(tokenRef);
  var userTokens = userTokenSync.$asArray();


  console.log(userTokens);
  console.log(userTokens[0]);

  for(var i=0, len = userTokens.length; i < len; i++) {
     console.log(userTokens[i]);
  }
  console.log('done');
})
Run Code Online (Sandbox Code Playgroud)

这段代码从firebase获取用户的标记,我只想浏览标记数组.

这是控制台给我的东西:

在此输入图像描述

如您所见,我无法访问该阵列.你知道我怎么能这样做吗?

提前致谢.

arrays angularjs firebase ionic-framework

17
推荐指数
1
解决办法
3478
查看次数

在JavaScript/node.js中做什么?

可能重复:
JavaScript中的"双波浪"(~~)运算符是什么?

我在node.js库的源代码中找到了这段代码.~~input变量有什么影响?

inArray[3] = ~~input;
Run Code Online (Sandbox Code Playgroud)

它还以其他方式使用:

return ~~ ((a - b) / 864e5 / 7 + 1.5);
Run Code Online (Sandbox Code Playgroud)

javascript node.js

10
推荐指数
2
解决办法
2280
查看次数

如何创建具有多个工作人员的队列?

我想创建一个客户端可以放入请求的队列,然后服务器工作线程可以将它们拉出来,因为它们有可用的资源.

我正在探索如何使用Firebase存储库执行此操作,而不是外部队列服务,然后必须将数据注入Firebase.

考虑到安全性和验证工具,这里有一个简单的例子:

  • 用户将请求推送到"队列"桶中
  • 服务器提取请求并删除它(我如何确保只有一个服务器获取请求?)
  • 服务器验证数据并从私有桶中检索(或注入新数据)
  • 服务器将数据和/或错误推送回用户的存储桶

在此输入图像描述

这可能有用的简化示例是身份验证:

  • user将身份验证请求放入公共队列
  • 他的登录名/密码进入他的私人桶(只有他可以读/写的地方)
  • 服务器获取身份验证请求,检索登录名/密码,并仅针对服务器可以访问的专用存储桶进行验证
  • 服务器将令牌推送到用户的私有桶中

(当然公共队列中仍然存在一些安全漏洞;我现在只是在探索)

其他一些用法示例:

  • 只读状态队列(用户状态通过私有桶传送,服务器写入公共桶,对公众只读)
  • 消息队列(消息通过用户发送,服务器决定它们被丢弃的讨论桶)

所以问题是:

  1. 这是一个很好的设计,可以很好地融入即将到来的安全计划吗?有哪些替代方法正在探索中?
  2. 如何让所有服务器监听队列,但只有一个服务器可以接收每个请求?

firebase

8
推荐指数
1
解决办法
2270
查看次数

从Firebase中的引用正确使用hasChild()和forEach()?

由于我的理解和SQL背景有限,我不太了解hasChild()和forEach()的用法; 他们觉得他们属于参考而不是快照.

(我将在其余的讨论中使用hasChild(),但这些概念是可以互换的.)

这是我的推理:

  1. 比方说,我有一个为用户表调用的Firebase路径 appname/users
  2. 我想看看用户(Fred)是否存在
  3. 我获得了一个参考: var users = new Firebase('appname/users')

但我无法确定这里是否有孩子存在.所以这就是我现在拥有的:

users.child('Fred').once('value', function(snapshot) {
   /** waits around forever if Fred doesn't exist */
});
Run Code Online (Sandbox Code Playgroud)

但这并不是很有效.所以现在我必须得到这样的东西的用户的价值(这感觉有点反直觉,因为我对用户不感兴趣):

var users = new Firebase('http://.../appname/users');
users.once('value', function(snapshot) { 
      snapshot.childExists('Fred', function(exists) { 
         /* do something here*/ 
      }); 
   });
Run Code Online (Sandbox Code Playgroud)

我不认为appname/users基于文档提取会产生很大的开销,但如果我只是想确定密钥'Fred'是否存在,这就像是一个难看的代码.

我希望看到类似的东西:

var users = new Firebase('http://.../appname/users');
users.hasChild('Fred', function(exists[, snapshotOfFred]) { 
   /* do something here*/ 
});
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来使用forEach/hasChild?我在这里错过了任何重要的逻辑考虑吗?

firebase

8
推荐指数
1
解决办法
4359
查看次数

限制可写入路径的记录数(引用安全规则中的其他路径)

假设我的Firebase集合如下所示:

{
  "max":5
  "things":{}
}
Run Code Online (Sandbox Code Playgroud)

我如何使用max我的安全规则中的值来限制数量things

{
  "rules": {
    "things": {
      ".validate": "newData.val().length <= max"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

firebase firebase-security

8
推荐指数
1
解决办法
4754
查看次数

Firefox太快调用setTimeout函数(或Date.getTime()关闭?)

我在Firefox 12中遇到了一个奇怪的问题.setTimeout()似乎并不总是等待适当的长度.或者也许这是没有jive的日期毫秒?

看看这个小提琴.从本质上讲,100ms的setTimeout似乎可以在80ms到110ms之间运行.根据John Resig对计时器的解释,我可以理解更多.但少?

您可能需要刷新一次或两次以查看问题,因为它有时在第一次运行时正常工作.它似乎在IE和Chrome中起着很大的作用.

这是我在小提琴中使用的代码:

var txt = '',
    TIMEOUT_LENGTH = 100,
    _now;

now = Date.now || function() { return new Date().getTime() };

function log(time) {
    c = time < 100? 'class="error"' : '';
    $('#log').append('<p '+c+'>waited ' + time + '</p>');
}

function defer() {
    var d = $.Deferred(),
        start = now();
    setTimeout(function() {
        d.resolve(now() - start);
    }, TIMEOUT_LENGTH);
    return d.promise();
}

for (var i = 0; i < 20; i++) {
    defer().then(log);
}
Run Code Online (Sandbox Code Playgroud)

以下是古怪输出的示例:

在此输入图像描述

这是我的浏览器信息: …

javascript jquery

7
推荐指数
1
解决办法
1524
查看次数

使用Firebase进行服务器端计算

给定的起始日期/时间和持续时间,我怎样才能使服务器侧计算,其确定是否有物体"finished","in progress""upcoming"

--Show
  --duration: "144"
  --startDate: "2015-11-10"
  --startTime: "14:00"
  --status: "?"
Run Code Online (Sandbox Code Playgroud)

客户端javascript确定节目是否已经开始:

// if negative, then show hasn't started yet
var time = (-(startdate.getTime() - currentdate.getTime()) / 1000 / 60); 
Run Code Online (Sandbox Code Playgroud)

客户端javascript确定节目是否已经完成运行:

// if negative, then show has finished
var timeLeft = channelDuration - timerStartTime;
Run Code Online (Sandbox Code Playgroud)

javascript firebase

7
推荐指数
1
解决办法
8814
查看次数

在路径中使用短划线重写的网址未正确重定向(404错误)

我正在使用firebase托管,我在firebase.json中设置了正确的url重写,如下所示:

"rewrites": 
[{
  "source": "**",
  "destination": "/index.html"
}]
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,因为所有路由都应该通过index.html.但是,当我在路由中有一个以" - "开头的firebase对象ID时,它会抛出404.所以例如my-cool-app.firebaseapp.com/profiles/-JfZA03uAJI7rpqQg0sG会返回404.但是,如果我删除id中的破折号,那么路径似乎是正确重写.

这可能是什么问题?

firebase firebase-hosting

6
推荐指数
0
解决办法
861
查看次数