使用Meetup的MEAN stack应用程序.api -“聚会”.getCategories不是一个函数

MEAN stack app using Meetup.api - "Meetup.getCategories is not a function"?

本文关键字:getCategories 函数 一个 聚会 MEAN Meetup stack 应用程序 api 使用      更新时间:2023-09-26

我在我的节点应用程序中使用Meetups.com API,我试图返回所有事件类别的JSON列表,但Angular一直返回," Angular .js:13708 TypeError: 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();
}

和后台的meeup .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;
    });
  };
}

谢谢!

解决!我忘记在服务中包含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;
    });
  }
}