Angular如何从数据库中获取数组并将元素推入其中

时间:2018-08-03 07:28:05

标签: angular firebase angularfire

我使用的是Firebase,还有一个带有单词的“字典”,每个单词都有不同的定义。我正在尝试从后端获取包含某个单词的定义的数组,并将新定义添加到其中。

这是数据的样子:

words 
    'Word1'
        'Definitions'
            'Definition1'
            'Definition2'
    'Word2'
        'Definitions'
            'Definition1'

我所做的是,但是我无法从值更改中获得属性“ definitions”:

let data = {
  name: word,
  definitions: [],
}

let newDefinition = 'Some definition'

let obj = this.db.object(`words/${word}`);

let obs = obj.valueChanges().subscribe(x => {
  changes = x;

  // If the word doesn't exist, create it.
  if (x === null) {
    data.definitions.push(this.newDefinition);
    obj.set({ definitions: data.definitions, word: data.word });

  // If the word exists add the definition to its list.
  } else {
    data.definitions = x.definitions;
    data.definitions.push(this.newDefinition);

    obj.update({ definitions: data.definitions });
  }
  obs.unsubscribe();
});

1 个答案:

答案 0 :(得分:0)

最简单的方法是将x强制转换为any

data.definitions = (<any>x).definitions;

但是为了完整性,您应该使用TypeScript接口为从数据库中获取的数据定义结构。