小编Pro*_*mit的帖子

JavaScript,优雅的方法来检查NULL/undefined的嵌套对象属性

一个"问题",我时不时地有一个对象,例如user = {},通过使用应用程序的过程,这将被填充.让我们说一下,在AJAX调用之后或者我这样做的事情:

user.loc = {
    lat: 50,
    long: 9
}
Run Code Online (Sandbox Code Playgroud)

在另一个地方,我想检查是否user.loc.lat存在.

if (user.loc.lat) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

如果它不存在,这将导致错误.如果user.loc.latundefined,user.loc当然也是undefined如此.

"Cannot read property 'lat' of null" - Dev Tools error
Run Code Online (Sandbox Code Playgroud)

这意味着我需要像这样检查:

if (user.loc) {
    if (user.loc.lat) {
        // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

if (user.loc && user.loc.lat) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

这不是很漂亮,我的对象越大越好 - 显然(想象10级嵌套).它种烧伤我,if(user.loc.lat)不只是返回false,如果user.locundefined也.

检查这种情况的理想方法是什么?

javascript object javascript-objects

96
推荐指数
4
解决办法
6万
查看次数

如何在Firebase Cloud Firestore中查询集合中最近的GeoPoints?

新的Firestore DB允许我存储GeoPoints.有没有办法根据它们进行查询?

因此,例如,如果我的每个集合文档都有一个location类型的字段geopoint.如何将最近的10个文档放到任意坐标?

文档似乎没有涵盖这一点.我试过这样的东西:

someRef.where('location', '>', geopoint).limit(10).get();
Run Code Online (Sandbox Code Playgroud)

显然这没有多大意义,但我只是在尝试一些东西

firebase google-cloud-firestore

29
推荐指数
2
解决办法
9867
查看次数

如何在Firebase Cloud Firestore中保存GeoPoint?

在数据库UI中,我可以创建一个具有该类型的字段geopoint.提供值后,它看起来像这样:

location: [1° N, 1° E]
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过客户端SDK(Web)将其保存到数据库中.基于Twitter反馈我尝试了GeoJSON,Coords数组和Coords对象:

location: [1, 2];
location: {
    latitude: 1,
    longitude: 2,
};
location: {
    "type": "Feature",
    "geometry": {
        "type": "Point",
        "coordinates": [125.6, 10.1]
    }
}
Run Code Online (Sandbox Code Playgroud)

这些都不会导致数据库中的geopoint类型.它们只是保存为对象/数组.

如何通过Web SDK在Firebase Cloud Firestore中保存GeoPoint?

firebase google-cloud-firestore

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

如何在Cloud Firestore中使用逻辑OR执行复合查询?

来自文档:

您还可以链接多个where()方法以创建更具体的查询(逻辑AND).

我该如何执行OR查询?例:

  1. 给我所有字段statusopenOR的文档upcoming
  2. 给我所有文件的领域status == openORcreatedAt <= <somedatetime>

database firebase google-cloud-platform google-cloud-firestore

24
推荐指数
2
解决办法
6322
查看次数

不支持嵌套数组

新的Firebase数据库Firestore说

函数DocumentReference.set()使用无效数据调用.不支持嵌套数组.

尝试保存以下对象时:

{
  "desc" : "Blala",
  "geojson" : {
    "features" : [ {
      "geometry" : {
        "coordinates" : [ 8.177433013916017, 48.27753810094064 ],
        "type" : "Point"
      },
      "type" : "Feature"
    } ],
    "type" : "FeatureCollection"
  },
  "location" : {
    "lat" : 48.27753810094064,
    "lng" : 8.177433013916017
  },
  "name" : "Wald und Wiesen",
  "owner" : "8a2QQeTG2zRawZJA3tr1oyOAOSF3",
  "prices" : {
    "game" : {
      "Damwild" : 10,
      "Raubwild" : 300,
      "Rehwild" : 250,
      "Schwarzwild" : 40
    },
    "perDay" : 35
  },
  "rules" : "Keine …
Run Code Online (Sandbox Code Playgroud)

firebase google-cloud-firestore

13
推荐指数
2
解决办法
5796
查看次数

Safari 解析 JSON-LD 时抛出异常

使用此简单代码创建一个 HTML 文件并在 Safari 中打开它。

<html>
  <head>
    <script type="application/ld+json">
      [
        {
          "@context": "http://schema.org",
          "@type": "Organization",
          "name": "Parqet",
          "url": "https://www.parqet.com/",
          "logo": "https://www.parqet.com/logos/parqet_logo_pos.svg",
          "sameAs": [
            "https://www.facebook.com/parqetcom",
            "https://twitter.com/ParqetApp",
            "https://www.instagram.com/ParqetApp/",
            "https://www.youtube.com/channel/UC4LOcElG8Z73Hvgbbp3m1KQ",
            "https://www.linkedin.com/company/parqet/",
            "https://github.com/tresorone"
          ]
        }
      ]
    </script>
  </head>
  <body>
    test
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Safari 会产生此错误。

类型错误:未定义不是对象(评估 'r["@context"].toLowerCase')

在此输入图像描述

非常感谢任何有关我们如何解决此问题的见解。在最后一个属性或对象中添加尾随逗号可以消除错误 - 但它不再是有效的 JSON。

safari structured-data json-ld

12
推荐指数
1
解决办法
1451
查看次数

如何:使用ONE表修复表头(没有jQuery)

我知道,在stackoverflow上至少有三十个这样的问题仍然存在,我无法做到这一点:

一个简单的表格,其中thead被固定/固定在顶部,并且tbody被滚动.我过去几天尝试过这么多,现在我最终在这里哭泣求救.

解决方案应该适用于IE8 +和最新的FF,Chrome和Safari.与其他"像可能重复的区别这一个是,我希望使用两个嵌套表或jQuery的(普通的JavaScript是罚款虽然).

演示我想要的东西:
http://www.imaputz.com/cssStuff/bigFourVersion.html.

问题是它在IE中不起作用,我可以使用一些JS.

sticky tableheader

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

Github for Mac:缺少拉取请求按钮

星期六我在Mac上安装了Github Desktop并试用了Github Workflow.创建了一个分支,提交了更改并执行了Pull请求.一切正常.

今天我在工作中安装了Github for Mac - 并且Pull Request Button无处可寻.我现在在私人Mac上回家,现在这里也没有按钮.

正如您在最后一个屏幕截图中看到的那样,分支机构已经在github.com上运行并准备好进行PR.Github for Desktops Timeline(右上角)中的点也很小,这意味着提交被推送.并且dev分支有更改(第二个屏幕截图).

难道我做错了什么?

在此输入图像描述

在此输入图像描述

在此输入图像描述

更新:也许我的分支机构没有资格获得PR?因为菜单项也是灰色的:

在此输入图像描述

我有两个分支,他们已经承诺(并推动)差异......嗯.

github github-for-mac

6
推荐指数
1
解决办法
3027
查看次数

Firebase Cloud Firestore抛出“客户端脱机”

在加载页面的4次中,大约有3次是从Firestore客户端SDK(Web)收到此错误的。这极大地减缓了开发速度。身份验证,实时数据库和存储都可以正常工作。

Failed to get document because the client is offline.
Run Code Online (Sandbox Code Playgroud)

错误

有什么我可以做的吗?

firebase google-cloud-firestore

5
推荐指数
3
解决办法
4642
查看次数

如何从动物群中的 Ref 获取 ID?

我正在从 faunadb 获取文档,我希望他们的 ID 包含在我发送给客户端的有效负载中。

这就是我获取文档并将其数据作为集合返回的方式


serverClient.query(
  q.Map(
    q.Paginate(q.Documents(q.Collection('Portfolio')), { size: 999999 }),
      q.Lambda(x => q.Get(x))
    )
  )
  .then((ret) => ret.data.map(x => ({ ...x.data, _id: x.ref })))
Run Code Online (Sandbox Code Playgroud)

现在_id是一个参考。当我将其登录到控制台时看起来像这样:

Ref(Collection("Portfolio"), "266565241615155713")
Run Code Online (Sandbox Code Playgroud)

就像这样,当 JSON 字符串化它时:

{"@ref":{"id":"266565241615155713","collection":{"@ref":{"id":"Portfolio","collection":{"@ref":{"id":"collections"}}}}}}
Run Code Online (Sandbox Code Playgroud)

我基本上需要266565241615155713从那个 Ref 中获取 ID 。我怎样才能做到这一点?我试过x.ref['@ref'].id@ref未定义。 文档在这里对我没有帮助

提前感谢您的任何提示。

faunadb

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

ff 中的 offsetWidth 与实际元素宽度不同

不知怎的,我在 Firefox 和 Chrome 中得到了不同的 offsetWidth 结果。我有一个简单的按钮

<button class="someClass">Dropdown<i class="iconRight iconArrowDown"></i></button>
Run Code Online (Sandbox Code Playgroud)

它的 offsetWidth 正好是 89 像素。Chrome 如此说,Photoshop 也如此。即使在 Firefox 中,它也显示为 89 像素元素,但 FirebugsoffsetWidth表示它有 90 像素。jQuery 在 Firefox 中也获得了 90 像素outerWidth()。当我使用宽度来计算时,它需要完全正确。

  • 遗憾的是我还不能发布图片

图片1https://i.stack.imgur.com/2YMNt.png

图2
https://i.stack.imgur.com/HiH9o.png

为什么offsetWidthfirefox的属性不对?

从评论中编辑:

我正在使用自定义字体。禁用字体可以解决问题。然而,在 FF+Linux、FF+Win7 和 Chrome+Win7 上使用自定义字体进行测试 - Windows 7 上的 Firefox 是唯一显示宽度与计算的 offsetWidth 不同的浏览器。尽管由于字体渲染的原因,按钮在 Linux 上有 91 个像素,但计算时没有问题,因为显示的宽度是相同的。现在我可能只能忍受这一点

firefox offsetwidth

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