我为Firestore文档使用以下模型:
{
name: "test",
isActive: true,
items: [
{
id: "123",
itemName: "testItem",
qty: 1
},
{
id: "555",
itemName: "anotherItem",
qty: 5
}]
}
现在,Firestore允许使用嵌套数组(通过arrayRemove / arrayUnion
),我想知道是否也可以通过AngularFire2做到这一点。
或者到目前为止唯一的方法是导入Firebase并直接使用它?
喜欢:
this.firestore.collection(<collectionName>).doc(<docID>).update({
answers: firestore.FieldValue.arrayUnion(<AnswersObject>)
});
此外,这种模型在FIrestore中具有嵌套数组的合法性,还是应该以不同的方式构建?
答案 0 :(得分:1)
很遗憾,AngularFire2尚不支持此功能。您可以通过检出source code来进行验证。
或者,如果您像我这样懒惰,并且不想在GitHub上寻找它...我要做的双重检查是将整个存储库下载为ZIP文件,然后解压缩并打开VS Code中的文件夹。在整个文件夹中搜索s = functions(f);
inputVarNames = regexp(s.function, '(?<=(,|@\())[^\)]+?(?=(,|\)))', 'match');
或FieldValue
不会返回任何内容-这些单词在整个源代码中不存在。
因此,就目前而言,您需要坚持使用默认的Firebase / Firestore软件包是正确的。嵌套数组绝对是“合法”的事情,但是像其他所有东西一样,何时使用它取决于您的情况-而且我没有足够的资格或经验来评估您的情况并提出强有力的建议。
答案 1 :(得分:1)
我为此挣扎了一段时间,看来angular的文档总是落后的。我更新了一个像这样的数组项,该数组称为accomodation
,它位于day
对象内。
this.data.firestore.doc(`days/${accommodation.day}`)
.update({
accommodation: [
accommodation
]
});