2016-09-14 75 views
0

我在我的節點應用程序中使用Meetups.com API,並且我試圖返回所有事件類別的JSON列表,但Angular一直返回,「angular.js:13708 TypeError:Meetup.getCategories is不是一個函數」使用Meetup.api的MEAN堆棧應用程序 - 「Meetup.getCategories不是函數」?

這裏是我的活動頁面控制器:

angular 
    .module("Londate") 
    .controller("EventsController", EventsController); 

EventsController.$inject = ["$state", "TokenService", "$rootScope", "Meetup"]; 
function EventsController($state, TokenService, $rootScope, Meetup) { 
    var self = this; 

    this.mapCenter = { lat: 51.5, lng: -0.1 }; 

    this.category = 1; 

    this.allCategories = []; 

    this.all = []; 

    navigator.geolocation.getCurrentPosition(function(position) { 
    $rootScope.$evalAsync(function() { 
     self.mapCenter = { 
     lat: position.coords.latitude, 
     lng: position.coords.longitude 
     } 

     self.getEvents(); 
    }); 
    }); 

    this.getEvents = function() { 
    Meetup.getEvents({ 
     lat: self.mapCenter.lat, 
     lng: self.mapCenter.lng, 
     category: self.category 
    }) 
    .then(function(events) { 
     console.log("EVENTS: " + events); 
     self.all = events; 
    }) 
    } 

    this.getCategories = function() { 
    Meetup.getCategories({ 
     name: self.name 
    }) 
    .then(function(categories){ 
     console.log("CATEGORIES: " + categories); 
     self.allCategories = categories; 
    }) 
    } 

    self.getCategories(); 

} 

而在後端的meetup.js控制器:

var request = require('request-promise'); 

function getEvents(req, res) { 

    request.get({ 
    url: "https://api.meetup.com/2/open_events", 
    qs: { 
     key: process.env.MEETUP_API_KEY, 
     lat: req.query.lat, 
     lon: req.query.lng, 
     category: req.query.category, 
     radius: req.query.radius || 1, 
     sign: true 
    }, 
    json: true 
    }) 
    .then(function(response) { 
    res.status(200).json(response.results); 
    console.log(response); 
    }) 
    .catch(function(err) { 
    console.log(err); 
    res.status(500).json(err); 
    }) 
} 

function getCategories(req, res) { 

    request.get({ 
    url: "https://api.meetup.com/2/categories", 
    qs: { 
     key: process.env.MEETUP_API_KEY, 
     name: req.query.name, 
     sign: true 
    }, 
    json: true 
    }) 
    .then(function(response) { 
    res.status(200).json(response.results); 
    console.log(response); 
    }) 
    .catch(function(err) { 
    console.log(err); 
    res.status(500).json(err); 
    }) 
} 

module.exports = { 
    getEvents: getEvents, 
    getCategories: getCategories 
} 

而在前端的meetup.js服務:

angular 
    .module("Londate") 
    .service("Meetup", Meetup) 

Meetup.inject = ["$http"]; 
function Meetup($http) { 
    this.getEvents = function(params) { 
    return $http({ 
     method: "GET", 
     url: "/api/meetups", 
     params: params 
    }) 
    .then(function(res) { 
     return res.data; 
    }); 
    }; 
} 

謝謝!

回答

0

解決!我忽略了在服務中包含getCategories,因此:

angular 
    .module("Londate") 
    .service("Meetup", Meetup) 

Meetup.inject = ["$http"]; 
function Meetup($http) { 
    this.getEvents = function(params) { 
    return $http({ 
     method: "GET", 
     url: "/api/meetups/events", 
     params: params 
    }) 
    .then(function(res) { 
     return res.data; 
    }); 
    }; 

    this.getCategories = function() { 
    return $http({ 
     method: "GET", 
     url: "/api/meetups/categories" 
    }) 
    .then(function(res) { 
     return res.data; 
    }); 
    } 
}