首页 > 解决方案 > *ngFor 在 mLab 对象上循环会产生错误,即使在声明数组之后也尝试 diff'[object Object]

问题描述

carousels: any = []在我的 TS 文件中声明了一个数组,但每当我使用 *ngFor 循环遍历它时,我都会收到一条错误消息,指出“只允许数组和可迭代对象”。该数组中的数据是从 mLab 获取的。

我的代码的目标是使用它的 id 从 mLab 更新一个对象,这似乎工作正常。但是每当我按下更新时,鉴于更新甚至可以工作,为什么我仍然会收到错误消息?

我试图改变carousels: any = []只是,carousels = []但它似乎并没有改变任何东西。

这是我的代码。

api.js(后端) ——这是与数据库通信的代码。

router.route('carousel/update/:_id).put(function(req, res) {

db.collection('home').updateOne({"_id": ObjectId(req.params._id)}, {$set: req.body}, (err, results) => {
if (err) throw err;
res.send(results)
console.log(req.params._id)
});
});

家庭服务.ts

return this.http.put<any[]>('./api/carousel/update/' + id, {'header': newheader, 'subheader': newsubheader})
}

组件.ts

宣言:

carousels: any = [];

更新功能:

updateSlide(id: number){
this.HomeService.updateSlide(id, this.header, this.subheader).subscribe(slides => {this.carousels = slides})
}

更新有效,但我仍然收到错误:尝试区分“[对象对象]”时出错。只允许使用数组和可迭代对象

标签: node.jsangularmlab

解决方案


.updateOne ({})不返回对象列表,而是返回包含更新行信息的对象。

您将从 API 返回该对象,然后将其设置在组件的 updateSlider() 中,您应该在其中设置一个数组。

尝试将结果记录在订阅中的 api 或幻灯片中,您应该能够看到问题。


推荐阅读