node.js - *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})
}
更新有效,但我仍然收到错误:尝试区分“[对象对象]”时出错。只允许使用数组和可迭代对象
解决方案
.updateOne ({})不返回对象列表,而是返回包含更新行信息的对象。
您将从 API 返回该对象,然后将其设置在组件的 updateSlider() 中,您应该在其中设置一个数组。
尝试将结果记录在订阅中的 api 或幻灯片中,您应该能够看到问题。
推荐阅读
- java - Java 泛型类型转换
- python-3.x - 尝试在 vscode 中执行 azure 函数
- react-native - 当我们从 IOS 设备中保存的联系人中键入任何联系人姓名时,React Native TextInput autoCorrect={false} 不起作用
- node.js - Node JS 应用程序因 ERR_SOCKET_CANNOT_SEND 错误而崩溃
- vb.net - 从datatable填写数据库
- macos - Chef Habitat Command hab 在 Mac OS BIG sur 11.2 上不起作用:未加载库:/opt/mac-bootstrapper/embedded/lib/libiconv.2.dylib
- kubernetes - Kubernetes 自定义健康检查
- php - 覆盖无效令牌消息以重置密码
- mathematical-optimization - 优化战斗机器人
- javascript - 如何更优雅地在同一方法中进行多个 Firebase 实时数据库检查?