我有这段代码,它从MongoDB获取一些数据并将其保存在组件的数组中。

this.laugService.getAllLaug().subscribe(laug => {
  this.laugs = laug; //save posts in array
});

this.laugs.array.forEach(element => {
  this.modelLaugs.push(new Laug(element.navn, element.beskrivelse))
});

之后,我想将这些数据保存到一个不同的数组中,在这个数组中创建模型“laug”的新实例。为此,我使用了foreach循环,但是运行此代码时出错:
ERROR Error: Uncaught (in promise): TypeError: Cannot read property
'forEach' of undefined
TypeError: Cannot read property 'forEach' of undefined

我确信我从数据库接收数据,但是我不确定为什么我的数组在这一点上没有定义。

最佳答案

您的订阅是异步的。尝试迭代时可能未设置laugs属性。只需将foreach代码放入subscribe回调:

this.laugService.getAllLaug().subscribe(laug => {
   this.laugs = laug; //save posts in array

   if (this.laugs && this.laugs.array) {
       this.laugs.array.forEach(element => {
          this.modelLaugs.push(new Laug(element.navn, element.beskrivelse))
       });
   }
});

关于arrays - 迭代从Observable的订阅函数创建的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44256713/

10-13 00:21