小编Dad*_*bob的帖子

Firestore 使用动态键更新嵌套对象中的字段

我需要使用动态键更新嵌套对象中的字段。路径可能如下所示: level1.level2.DYNAMIC_KEY : updatedValue update-method 删除 level1 上的所有其他内容,而不是仅更新嵌套对象中的字段。update() 的作用更像是 set()。我究竟做错了什么?

我已经尝试了以下方法:

我阅读了文档https://firebase.google.com/docs/firestore/manage-data/add-data#update-data 但这样它是 a) 静态和 b) 仍然删除其他字段。

更新嵌套对象中的字段 如果您的文档包含嵌套对象,您可以在调用 update() 时使用“点表示法”来引用文档中的嵌套字段

这将是静态的并导致

update({
'level1.level2.STATIC_KEY' : 'updatedValue'
});
Run Code Online (Sandbox Code Playgroud)

然后我找到了这个答案/sf/answers/3310730671/ ,它帮助我使更新路径动态化。在此之后所需的解决方案可能看起来像

field[`level1.level2.${DYNAMIC_KEY}`] = updateValue;
update(field);
Run Code Online (Sandbox Code Playgroud)

但仍然:它会删除此路径中的其他字段。

更新:

我的文档结构如下: 快照

所以在这个结构中我只想更新 complexArray > 0 > innerObject > age

将上述路径写入 update() 方法将删除 complexArray 级别上的所有其他内容。对一级字段的简单更新工作正常,并让其他一级字段保持不变。

是否有可能像 update() 这样的 Firestore 函数只能作用于文档的最低字段级别。一旦我将复杂的对象放入文档中,就不可能选择这样的内部字段?我知道会有解决方案将这些“复杂”对象提取到单独的集合 + 文档中,并将它们放入我当前的最低文档级别。我认为这将是坚持 FireStore 原则的更准确方法。但是在应用程序方面,处理复杂对象比总是深入研究 firestore 集合 + 文档结构更容易。

所以我当前的解决方案是将整个复杂对象发送到 update() 方法中,即使我只更改了应用程序端的一个字段。

cloud firebase google-cloud-firestore

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

Safari 浏览器中 CSS 不透明度的不同显示

我正在 Ionic-Framework 中为移动设备开发一个混合应用程序。我尝试使某些 HTML 跨度对于定义的区域在一定程度上看起来透明。HTML 和 CSS 在每台 Android 设备上都能正常工作,但在每台 Apple 设备上显示却毫无用处。这意味着阴影不透明度和相关的 HTML 元素每次都会突然显示在视图中完全不同的位置。不透明度有时会影响整个页面。当我从视图中删除相关的 HTML 时,一切都很好,这让我怀疑 safari 无法按照我想要的方式解释我的代码。

我怀疑是 safari bug 或某些 safari 怪癖造成了这种奇怪的显示。

这里它是如何正确的并且在 Android 设备上看起来像这样:https://ibb.co/diNxxw 这里它是如何在每个 iOS 设备上崩溃的:https: //ibb.co/eNfZcw https://ibb.co/jiPGqG

这是我的 HTML

<ion-item>
                <ion-label class="label-left-filler" [ngStyle]="{'width': avgRatings[speise.id]?.ratingAverage ? (((avgRatings[speise.id]?.ratingAverage | roundDecimal : avgRatings[speise.id]?.ratingAverage)-1) * (25+5) +13) +'px' : 0 +'px' }">
                </ion-label>
                <ion-label class="label-rating">
                  <span class="span-rating">
                    <span class="span-emojicon">
                      <mat-icon class="mat-icon-one">sentiment_very_dissatisfied</mat-icon>
                      <span class='mat-icon-spacer'></span>
                      <mat-icon class="mat-icon-two">sentiment_dissatisfied</mat-icon>
                      <span class='mat-icon-spacer'></span>
                      <mat-icon class="mat-icon-three">sentiment_neutral</mat-icon>
                      <span class='mat-icon-spacer'></span>
                      <mat-icon class="mat-icon-four">sentiment_satisfied</mat-icon>
                      <span class='mat-icosxn-spacer'></span>
                      <mat-icon class="mat-icon-five">sentiment_very_satisfied</mat-icon>
                    </span> …
Run Code Online (Sandbox Code Playgroud)

html css safari ionic-framework

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