私は、問題がExpressサーバーにパラメーターを渡すことにあると考えていました。私はそれ以来、Angular側に問題があることを示してきました。 flConstruct.js関数でidをハードコードすると、クエリは期待通りに機能しました。 idがflCachedConstructs関数からflConstructの "get"に渡されていないようです。あなたが見ることができるように、私はコンソールログを使用していくつかの場所にあるIDを表示し、適切なIDが出力されます。なんらかの理由で、パラメータがflConstructのgetに関連付けられていません。たぶん、私のスペーシングやシンタックスが正しくないかもしれません。あなたが提供できるどんな洞察も高く評価されます。
// flConstructDetailCtrl.js
angular.module('app').controller('flConstructDetailCtrl', function($scope, flCachedConstructs, $stateParams, $state, flConstructDataService, flQuestionQueryParameterService){
console.log('Just inside the flConstructDetailCtr');
console.log('flConstructDetailCtr - before promise - $stateParams.id ' + $stateParams.id);
flCachedConstructs.queryID($stateParams.id)
.then(function(data) {
// work with data here
console.log("flConstructDetailCtr - Get Success " + data);
console.log("flConstructDetailCtr - Get Success Question description " + data.description);
console.log("flConstructDetailCtr - Get Success Question id " + data._id);
flConstructDataService.setInitialized(true);
flConstructDataService.setNewConstructId(data._id);
flConstructDataService.setNewTitle(data.title);
flConstructDataService.setNewDescription(data.description);
$state.go("constructUpdate");
});
//flCachedConstructs.js
angular.module('app').factory('flCachedConstructs', function(flConstruct,$http, $q, $state, $timeout) {
var constructList = null; // temporarily set to null for testing purposes
return {
queryID: function(id) {
console.log("flCachedConstruct - queryID function by ID - start");
console.log("flCachedConstruct - queryID function by ID - parameter = constructId " + id);
var deferred = $q.defer();
flConstruct.get(id, function(data) {
if (data) {
deferred.resolve(data);
console.log("flCachedConstruct - queryID function by ID - resolved Data = " + data);
console.log("flCachedConstruct - queryID function by ID - resolved Data data.description " + data.description);
console.log("flCachedConstruct - queryID function by ID - resolved Data data._id " + data._id);
}
else {
deferred.reject("Error getting Construct");
console.log("flCachedConstruct - queryID function by ID - rejected Data");
}
});
console.log("flCachedConstruct - queryID function by ID - return Promise data");
return deferred.promise;
},
}
})
//flConstruct.js
angular.module('app').factory('flConstruct',function($resource){
var ConstructResource = $resource('/api/constructs/:id', {id: '@id'}, {
get: { method: 'GET', url: '/api/constructs/byId', params: {id: '@id'}},
//get: { method: 'GET', url: '/api/constructs/byId', params: {id: '570ab7c086ccc2d81ac18fa6'}}, (By hard coding the query worked as expected)
query: { method: 'GET' , url: '/api/constructs', isArray: true },
create: { method: 'POST'},
update: { method: 'PUT' },
delete: { method: 'DELETE', params: {id: '@id'}}
});
return ConstructResource;
});