我正在使用Angular-Fullstack生成器,并且我无法通过$ resource查询获取取决于companyID的驱动程序列表。这就是我所拥有的:
服务器/ API /驱动器/ index.js:
router.get('/:company', controller.index);
服务器/ API /驱动器/ driver.controller.js:
export function index(req, res) {
return Driver.find({company: req.params.company}).exec()
.then(function(res){
console.log(res); /* I get here the result correctly */
respondWithResult(res)
})
.catch(handleError(res));
}
的客户端/服务/ driver.service.js:
export function DriverResource($resource) {
'ngInject';
return $resource('/api/drivers/:id/:company', {company: '@_id'});
}
客户端/应用程序/驱动程序/ driver.controller.js:
this.driverList = Driver.query({company: Auth.getCurrentUser()._id}});
console.log(this.driverList); /* Empty array */
如果有人能帮助我从服务器获得响应,我将不胜感激......
提前谢谢。
答案 0 :(得分:1)
我刚刚意识到我正在复制“' res'变量:
服务器/ API /驱动器/ driver.controller.js:强>
export function index(req, res) {
return Driver.find({company: req.params.company}).exec()
.then(function(**res**){
/* Should be the result, not the response */
console.log(**res**);
respondWithResult(**res**)
})
.catch(handleError(res));
}
答案 1 :(得分:0)
你很亲密。
Driver.query({company: 'foo'}).$promise.then(function(results) {
console.log(results) //here
}, function(err) {
//here is your 404 error, but you should create an http interceptor
});
它是异步的,你不能马上得到你的结果。 当然,假设您的后端正确响应,这将有效。
编辑:你的后端缺少一些端点。您应该能够使用驱动程序列表回复/api/drivers/
的请求
编辑2:
Angular的资源将为您提供访问某些方法的权限:
Driver.get(1)将向/ api / drivers /:id发出请求,并期望后端响应代表具有所述ID的驱动程序的对象。当您只想获取1条记录
时,应该使用此选项Driver.query({foo:' bar',some_id:1})会向/ api / drivers发出请求?foo = bar& some_id = 1并且会期待后端响应一组对象,每个对象代表一个驱动程序。当您想要获取多个记录时,例如在索引中,应该使用此方法。
Driver.query()会向/ api / drivers发出请求,并期望后端响应数组
Driver.create(data)将向/ api / drivers发出POST请求,并期望响应中有一个对象(创建的驱动程序)。用于创建新记录
还有其他一些,这是我使用的。
因此,考虑到您正在使用这三种方法,您的后端需要处理:
router.get('/drivers/:id', function(req, res) {
let id = req.params.id
})
router.get('/drivers', function(req, res) {
//if request was /drivers?foo=bar
let foo = req.query.foo
})
router.post('/drivers', function(req, res) {
let body = req.body
})
正如我所说,这里有几件事情在起作用。如果你处于迷失状态,请将问题分解成碎片。在前往Angular之前让后端工作。