小编Dal*_*ang的帖子

Firebase child_added仅适用于新项目

我正在使用Firebase和Node with Redux.我按如下方式从密钥加载所有对象.

firebaseDb.child('invites').on('child_added', snapshot => {
})
Run Code Online (Sandbox Code Playgroud)

这种方法背后的想法是我们从数据库中获取有效负载,并且只使用一个动作通过Reducers更新我的本地数据存储.

接下来,我需要收听关键邀请的任何新的更新的孩子.然而,现在的问题是child_added事件触发所有现有密钥以及新添加的密钥.我不想要这种行为,我只需要新密钥,因为我检索了现有数据.

我知道child_added通常用于这种类型的操作,但是,我希望减少触发的动作数量,并因此触发呈现.

实现这一目标的最佳模式是什么?

谢谢,

javascript events firebase firebase-realtime-database redux

19
推荐指数
2
解决办法
5830
查看次数

发送一个通知后未注册的令牌错误

我在使用Firebase时遇到了Android应用程序的这个戏剧性问题.1.我的应用程序在第一次启动时收到令牌2.我能够从firebase控制台向注册令牌发送通知3.如果我尝试在步骤2之后再次使用控制台发送通知.它向我显示"未注册令牌"在第二次尝试之后.

我已经在清单中存在所有必要的配置,并且google service.json文件也已使用正确的配置.我相信事情是正确的,因为应用程序能够接收一次通知,问题才会在此之后开始.

更新1:如果我卸载应用程序并重新安装它,那么我也只能收到一次通知.

那些想要查看代码的人,这就是我获取令牌的方式:

@Override
public void onTokenRefresh() {

    //Getting registration token
     refreshedToken = FirebaseInstanceId.getInstance().getToken();

    //Displaying token on logcat
    Log.d(TAG, "Refreshed token: " + refreshedToken);
     saveDeviceToken(refreshedToken);
}
Run Code Online (Sandbox Code Playgroud)

这只能在第一次启动时调用,之后,我还没有看到它被调用(我认为这是预期的行为).

收到的OnMessage也会在第一次通知时被调用,然后它永远不会被取消:

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    Log.d("FCM", "From: " + remoteMessage.getFrom());

    if (remoteMessage.getNotification() != null) {
        Log.d("FCM", "Notification Message Body: " + remoteMessage.getNotification().getBody());
        sendNotification(remoteMessage.getNotification().getBody());
    }
}
Run Code Online (Sandbox Code Playgroud)

更新2:尝试使用相同的服务器密钥和令牌命中FCM的HTTP api并获得以下响应:

   {
  "multicast_id": 6286279702096230688,
  "success": 0,
  "failure": 1,
  "canonical_ids": 0,
  "results": [
    {
      "error": "NotRegistered"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

为了避免交叉问题,这里有更多细节:

  • Android studio:v2.3.1
  • Google Play服务版:10.0.1 …

notifications android firebase google-cloud-messaging firebase-cloud-messaging

16
推荐指数
1
解决办法
3793
查看次数

具有不同顺序的Safari上的CSS过滤器非常慢,有人可以解释一下吗?

似乎filter: none;在Safari(速度)上的位置/顺序有很大的不同.有人可以对所发生的事情提供一个可靠的解释吗?

仅在Safari中检查以下两个示例


示例1 :( filter: none;在CSS规则结束时,它在Safari上非常慢)

示例1(在safari上慢)

section#pitches>div>div:hover {
  opacity: 0.6;
  filter: grayscale(0%);
  -webkit-filter: grayscale(0%);
  filter: none; /* IE 6-9 */
}
Run Code Online (Sandbox Code Playgroud)

示例2 :( filter: none;在其他浏览器特定的过滤器上方移动使其快得多)

示例2(快得多)

section#pitches>div>div:hover {
  opacity: 0.6;
  filter: grayscale(0%);
  filter: none; /* IE 6-9 */
  -webkit-filter: grayscale(0%);
}
Run Code Online (Sandbox Code Playgroud)

我在网上搜索试图找到解释,但没有运气?

我有我的猜测,但据我所知CSS不会停止检查其他规则如果看到filter: none;

css safari css3 css-filters

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

使用Jackson更改嵌套JSON对象中的数组

我试图通过指定该数组的路径来弄清楚如何更改JSON数组中的现有对象.

问题是我不知道如何指定数组的路径,以便可以更改它.我在那里尝试的每个方法都没有关于如何更改ObjectNode中的数组的示例.

这是我现在的代码,在其中我尝试通过指针表示法指定数组的路径来获取和更改数组,但是,这总是不返回数组:

构建POJO类不是一种选择.

我的json结构中的数组如下:

{
  RESULTS: {
     ATTACHMENTS: {
       ATTACHMENT: [{object}]
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

码:

   private JsonNode attachmentConversion(JsonNode object){
        final String ATTACHMENT_POINTER = "/RESULTS/ATTACHMENTS/ATTACHMENT"; //Path to the array
        ObjectNode OUTPUT = object.deepCopy();
        OUTPUT.remove("DETAILS");

        //Validate is an array - It properly fetches the array 
        if(object.at(ATTACHMENT_POINTER).isArray()){
            int counter=0;

            //Loop through attachment array - It properly fethes each object in the array
            for(final JsonNode objNode : object.at(ATTACHMENT_POINTER)){
                ObjectNode objectNode = objNode.deepCopy();
                OUTPUT.withArray(ATTACHMENT_POINTER) //HERE IS THE PROBLEM - How do I specify the …
Run Code Online (Sandbox Code Playgroud)

java jackson jackson-databind

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

在 iOS 上忽略关键帧内的不可设置动画的属性

我知道不可动画的属性不会在动画中插入,但是,我的理解是这些值至少是(突然)计算的。

因此,例如,假设我想将溢出属性(不可设置动画,即不在此列表中)从hiddento设置为“动画” visible- 我希望计算出的值会适当更改。

(我尝试在规范中查找此内容,但找不到明确提及的内容)

这实际上发生在 Chrome 和 Firefox 中,但不是在 iOS 上。(Safari、iPhone)

.animate {
  border: 5px solid green;
  width: 200px;
  height: 100px;
  animation: 3s resetOverflow;
}
@keyframes resetOverflow {
  from {
    overflow: hidden;
    color: red;
  }
  to { 
    overflow: visible;
    color: green;
  }
}
Run Code Online (Sandbox Code Playgroud)
<div class="animate">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s when an unknown …
Run Code Online (Sandbox Code Playgroud)

css ios css-animations

5
推荐指数
1
解决办法
366
查看次数

在javascript中使用全局函数是否有效?

我有一个关于全局脚本的问题,我现在正在使用以下脚本,因为这些函数在每个页面上全局使用.(在我拥有与unit converter8个地方定义的函数相同的函数之前,现在我将它移动到全局脚本,所以我只定义一次.)

我的问题是,这是一种有效的方法还是最佳做法?我真的需要它们全局定义并在其他脚本调用这些方法之前加载.

我搜索过这样的文章建议不要使用全局函数.https://www.w3schools.com/js/js_best_practices.asp

避免使用全局变量

最大限度地减少全局变量的使用.

这包括所有数据类型,对象和函数.

全局变量和函数可以被其他脚本覆盖.

改为使用局部变量,并学习如何使用闭包.

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript">
        /*-----------------------------------------------------
            global function for Set/Get Cookie
        ------------------------------------------------------*/
        function setCookie(cname,cvalue,exdays) {
            var d = new Date();
            d.setTime(d.getTime() + (exdays*24*60*60*1000));
            var expires = "expires=" + d.toGMTString();
            document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
        }

        function getCookie(name) {
            var value = "; " + document.cookie;
            var parts = value.split("; " + name + "=");
            if (parts.length == 2) return …
Run Code Online (Sandbox Code Playgroud)

html javascript html5 global-variables

5
推荐指数
1
解决办法
1404
查看次数

如何更改Select2框中文本的填充

我已经能够更改select2框的高度并应用一些更改,但我现在的问题是select2框中的文本出现在选择框的中心,也出现在箭头的顶部.我只是不知道为什么?在此处查看图像https://i.stack.imgur.com/mckMI.jpg

.select2-container--bootstrap .select2-selection {
  -webkit-box-shadow: 0;
  box-shadow: 0;
  background-color: #fff;
  border: 0;
  border-radius: 0;
  color: #555555;
  font-size: 14px;
  outline: 0;
  min-height: 48px;
}
Run Code Online (Sandbox Code Playgroud)

css jquery-select2 drop-down-menu

4
推荐指数
1
解决办法
5456
查看次数

HTML5 验证检查输入大于 0

我有一个应该大于 0的输入字段,我min="0.00000001"用来验证输入数字是否大于 0。

<input type="number" step="0.00000001" min="0.00000001" name="price" value="[%price%]" />
Run Code Online (Sandbox Code Playgroud)

由于我不想指定stepand min,我只想验证输入数字是否大于 0。

有没有更好的方法来比较输入?例如像input > 0min > 0

我正在寻找一种解决方案,但如果不使用step+就找不到解决方案min

只使用 html5,我们可以这样做吗?谢谢你的帮助

<input type="number" step="0.00000001" min="0.00000001" name="price" value="[%price%]" />
Run Code Online (Sandbox Code Playgroud)

html validation

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