【发布时间】:2020-12-09 00:55:37
【问题描述】:
我一直在尝试返回一些用户信息并通过 HTML 显示它们。但我收到错误: “无法读取属性 'firstname' of null”错误” 为了存储数据,我使用 MongoDB,用于后端服务 Express 和 Node.js 以及用于前端 Angular。 为了在后端和前端之间进行通信,我将其委托给了 HttpClient。与 Mongo 的连接工作正常,因为我的控制台接收到所有数据,但是当涉及到前端时,它给了我这个问题。
连接MongoDB的routes-index.js类方法
router.get('/tasks', async (req, res) => {
let MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
res.json([
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db('angular-auth');
dbo.collection('users').find({}).toArray(function(err, result) {
if (err) throw err;
console.log(result);
//db.close;
});
})
])
});
tasks.service.ts 向前端返回数据的类方法
getTasks() {
return this.httpClient.get<any>(this.URL + '/tasks');
}
private-tasks.component.ts 类 ngOnInit() 方法,假设获取和订阅数据
ngOnInit(): void {
this.tasksService.getTasks()
.subscribe(
res => {
console.log(res); //<===== this line is returning null value!
this.tasks = res;
},
err => console.log(err)
);
}
private-tasks.component.html 类
<ul class="list-group">
<li class="list-group-item" *ngFor='let task of tasks'>
{{task.firstname}}
</li>
</ul>
console.log(res);给出空值,但在 if/else 语句中它实际上不是空的……我怎么确定那不是……因为同样的方法在控制台中给了我输出。我也尝试过添加? {{task?.firstname}} 以这种方式我没有收到任何错误,但仍然是 console.log(res);给出空值。
您有什么建议可以解决这个问题吗?
【问题讨论】:
标签: node.js angular mongodb express