【发布时间】:2018-11-10 01:24:45
【问题描述】:
我正在尝试从我的 AngularJS 工厂中的 expressjs api 中获取单个结果。
工厂看起来像这样,并从我的 api 中获取所有帖子(用 expressjs 编写并从 mongodb 获取数据),它工作正常:
angular.module('bonsaiService', ['ngResource']).
factory('bonsaiService', function($q,$resource) {
var bonsaiResource = $resource('http://localhost:8888/api/bonsais/:bonsaiId',{},{
get:{
method: 'GET',
params:{bonsaiId:''},
isArray: true
}
});
return {
get:function(){
var q = $q.defer();
bonsaiResource.get({
},
function(resp){
q.resolve(resp);
},function(httpResponse){
q.reject(httpResponse);
});
return q.promise;
}
//find by id
};
});
到目前为止,我尝试的是在 $resource url 之后添加 :bonsaiId 并为该 id 添加参数,如下所示:params:{bonsaiId: ''}。
服务器部分(expressJS)如下所示:
router.route('/bonsais/:bonsaiId')
.get(function(req,res){
Bonsai.findOne(req.params.bonsaiId,function(err,bonsai){
if(err)
res.send(err);
res.json(bonsai)
})
})
当我调用本地 url(带有和现有 _id 来自 mongodb)时,它可以正常工作并以 json 格式返回我的数据:
http://localhost:8888/api/bonsais/536be2e2ae54668818000001
现在在控制器中,我试图在我的范围内获取这些数据,但这是行不通的。
bonsaiService.get({bonsaiId:$routeParams.bonsaiId}).then(
function(data){
$scope.trees = data;
console.log(data);
});
我该如何进行这项工作?
【问题讨论】:
-
调用服务时控制台会发生什么?此外,您是否在控制器中(或通过配置在整个应用程序中)注入了服务?
-
我得到了 mongodb 中所有条目的结果...
标签: angularjs mongodb express mean-stack