我有一个快递路由器
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Stats = require('../models/Stats.js');
/* GET ALL STATS */
router.get('/', function(req, res, next) {
Stats.find(function (err, products) {
if (err) return next(err);
res.json(products);
});
});
也是api
getAll(){
this.http.get('/main').subscribe(data => {
console.log(data);
return data;
});
}
我正在组件中使用它
show(){
console.log(this.api.getAll());
}
问题是当我在api中记录数据时,getAll()数据返回的很好,但是如果我在组件中记录了数据,则我未定义。
答案 0 :(得分:1)
在getAll()
中,您应该返回可观察的值:
getAll(){
return this.http.get('/main');
}
然后在调用该函数的位置订阅可观察对象:
show(){
this.api.getAll().subscribe((data) => {
// Here you can do what you want with the data.
console.log(data)
})
}
答案 1 :(得分:0)
您的服务应return
,将服务更改为
getAll(){
return this.http.get('/main').subscribe(data => {
console.log(data);
return data;
});
}
最好不要在组件部分中subscribe
声明服务。
答案 2 :(得分:0)
您在Angular中使用的服务或API应该只是调用后端服务,而不是在服务本身中而是在组件中进行订阅。
服务:
getAll(){
return this.http.get('/main');
}
组件:
this.service.getAll().subscribe((data)=> {
// Your Data
},error => {
console.log('error: ', error)
});