小编Cra*_*ver的帖子

将JSON对象映射到Javascript对象

当使用AJAX时,我倾向于以JSON对象(又称Javascript)的形式将对象从我的服务器传递给Javascript.我的Javascript中的某些函数依赖于我正在使用的特定类型的对象.例如,让我们使用电话号码.我有一个构造函数:

function PhoneNumber(number, type, isPrimary, contactId, id, className) {
    this.number = number;
    this.type = type;
    this.isPrimary = isPrimary;
    this.contactId = contactId;
    this.id = id;
    this.className = className;
}
Run Code Online (Sandbox Code Playgroud)

在我的Javascript中创建电话号码对象时使用的.在某些情况下,我不在JS中创建对象,我从服务器获取对象,因此它以具有完全相同字段的通用对象的形式出现.因此,当我的代码依赖于特定类型时,使用如下内容:

var objType = objArray[i].constructor.name;
var mappedObj;

switch(objType) {
    case 'PhoneNumber':
        currentArray = currentArray.phone;
        //Convert response to javascript object.
        mappedObj = mapPhone(jsonResponse[i]);
        break;
    case 'Email':
        currentArray = currentArray.email;
        mappedObj = mapEmail(jsonResponse[i]);
        break;
    case 'Address':
        currentArray = currentArray.address;
        mappedObj = mapAddress(jsonResponse[i]);
        break;
    case 'Website':
        currentArray = currentArray.website;
        mappedObj = mapWebsite(jsonResponse[i]);
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我检查对象构造函数的名称,并根据该名称设置某些变量.如果我检查名称的对象是来自服务器的JSON,它只是给我一个通用的"对象"响应,因此代码不起作用.我通过为每个对象使用映射函数来解决这个问题,例如:

function …
Run Code Online (Sandbox Code Playgroud)

javascript json

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

链接到容器时如何使用主机网络?

在我的docker-compose中:

laravel:
    image: trackware
    links:
        - postgis:postgis
    ports:
        - "80:80"
        - "3306:3306"
        - "443:443"
        - "220:22"
        - "8000:8000"
    net: "host"
    restart:  always
    volumes:
        - C:/H/repositories/pubnub:/share
    container_name: laravel

postgis:
    image: mdillon/postgis
    env_file: .postgis_env
    ports:
        - "9090:9000"
        - "54320:5432"
    container_name: postgis
Run Code Online (Sandbox Code Playgroud)

如果我跑,docker-compose up -d我得到这个错误:

Conflicting options: host type networking can't be used with links. This would result in undefined behavior
Run Code Online (Sandbox Code Playgroud)

那么,net: "host"在链接到postgis容器时我将如何使用?laravel容器需要运行pubnub客户端,这需要高性能的网络来实现实时消息处理,还需要链接到postgis容器来访问db.

那么,有什么建议吗?我正在使用docker 1.10.2

laravel docker docker-compose

11
推荐指数
1
解决办法
9222
查看次数

pubnub,如何识别发件人?

当从pubnub接收消息时,没有关于发送者的信息.如何知道来自visitorA或visitorB的消息?在网络上有一些例子,发送者用信息发送他的名字,但是如何知道他不是在欺骗别人的身份?

这是一个聊天界面的示例:

<html>
  <body>
    <form id="message_form">
      <input id="message_input" type="text"/>
    </form>
    <div id="chat"></div>
    <script src="http://cdn.pubnub.com/pubnub-3.7.1.min.js"></script>
    <script>
      var pubnub = PUBNUB.init({
        publish_key: 'demo',
        subscribe_key: 'demo'
      });

      pubnub.subscribe({
        channel: 'chat',
        message: function(message){
          var div = document.createElement("div");
          div.textContent = message;
          var chat = document.getElementById("chat");
          chat.appendChild(div);
        }
      });

      var form = document.getElementById("message_form");
      form.onsubmit = function(e) {
        var input = document.getElementById("message_input");
        pubnub.publish({
          channel: 'chat',
          message: input.value
        });
        input.value = '';
        e.preventDefault();
      };
    </script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

javascript pubnub

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

如何获取 postgres select 中数字第一次出现的位置

我有一个包含 SDK 名称和版本的字段,但它没有标准化,因此我可以轻松提取名称和版本。这些是人为的值,但代表了我正在使用的可能值:

  • JavaScript/2.3.4
  • JavaScript/4.3.1
  • 安卓4.6.5
  • 安卓3.2.1
  • 斯威夫特4.5.3
  • 斯威夫特/3.1.1.5

正如您所看到的,“/”的使用不一致,我需要一种方法来一致地解析数字中的字母,以便我最终得到如下两列:

JavaScript     2.3.4
JavaScript     4.3.1
Android        4.6.5
Android        3.2.1
Swift          4.5.3
Swift          3.1.1.5
Run Code Online (Sandbox Code Playgroud)

我已经寻找了不同的方法来做到这一点,但我发现似乎没有任何方法可以满足我的要求。

最终,我需要将其放入 Postgres SELECT 语句中,如下所示:

编辑

我认为 DISTINCT 关键字是不必要的并且令人困惑。它最初是 COUNT/GROUP BY 查询的一部分,但为了简单起见,我只想分别列出具有三列的所有行:sdk、sdk_name 和 sdk_version。从那里我将使用答案中的最佳解析公式来按照我的要求进行操作。

SELECT sdk, [parse sdk name formula] as "sdk_name", [parse sdk version formula] as "sdk_version"
Run Code Online (Sandbox Code Playgroud)

此外,我没有在查询中提供固定的 SDK 列表,因此我不确定该with/as/values策略是否适合我,但我不知道并且看起来很有用。不过,我认为 with/values 可以只是另一个 SELECT 查询。

regex sql postgresql parsing

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

PubNub webrtc仅适用于本地网络

我以前问过这个问题,但没有任何运气..我在本教程后遇到问题https://www.pubnub.com/blog/2014-10-21-building-a-webrtc-video-and-voice-chat - 应用/.我写了代码,它在本地网络上完美运行,但是当我尝试连接远程客户端(即不在同一网络上)时,代码不再起作用了.它只显示一个黑屏,客户端的视频应该是.

phone.receive(function(session){
    session.connected(function(session){
        $("#vid-box").append(session.video); //outputs black screen
    });

    session.ended(function(session) {alert("Call ended: "+session.number});
});
Run Code Online (Sandbox Code Playgroud)

我甚至联系了PubNub,但他们无法提供帮助.有人有什么想法吗?

javascript stun webrtc pubnub turn

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

为什么 Android 通知需要 firebase 以及 OneSignal、Pubnub 和 pusher 等第三方通知提供程序?

我正在研究本机推送通知。在向任何第三方通知提供商进行购买之前,我正在寻找一些答案

  1. 为什么 OneSignal、Pusher 和 PubNub 等第三方通知提供商基于 Firebase 云消息传递?
  2. 他们不能在不依赖 Firebase 的情况下独立发送通知。当 FCM 免费提供工作时,为什么要向第三方提供商支付更多费用?

push-notification pusher pubnub react-native onesignal

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

从 Presto varchar 列解析 JSON 失败

我正在尝试将我的varchar列数据( stringifed )转换JSONMAP数据类型,以便我可以将数据作为元素引用。

WITH
data(c) AS (
    SELECT message from mydb.mytable
),
parsed AS (
    SELECT cast(json_parse(c) as map(varchar, varchar)) AS m
    FROM data
)
SELECT m['action'], m['uuid']
FROM parsed
Run Code Online (Sandbox Code Playgroud)

示例数据如下所示: {"action":"send","timestamp":1566432054,"uuid":"1234"}

我尝试了此处提供的解决方案:How to cast varchar to MAP(VARCHAR,VARCHAR) in presto,这是我从valuesselect语句替换得到查询的地方,但它不起作用。我收到错误:

INVALID_CAST_ARGUMENT: Value cannot be cast to map(varchar,varchar)

presto

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