2016-07-26 4 views
0

내 코드에 문제가 있습니다. 로컬 서버에 $ http 요청을하기 위해 코드를 배치하는 방법 및 위치를 모르겠습니다.

api.js

var express = require('express'); 
var router = express.Router(); 
var mongoose = require('mongoose'); 
var Place = mongoose.model('Place'); 

module.exports = function(app){ 
app.get('/api/place', function(req, res){ 
    Place.find(function (err, places){ 
     if (err) 
      res.send(err); 

     res.json(places); 
    }); 
}); 
}; 


router.route('/place') 

.post(function(req, res) { 

var place = new Place(); 

place.name = req.body.name; 
place.address = req.body.address; 
place.created_at = req.body.created_at; 

place.save(function(err){ 
    if (err){ 
     return res.status(500).send(err); 
    } 
    return res.json({message: 'Place added', place}); 
}); 

}) 

.get(function(req, res){ 

Place.find(function(err, place){ 
    if(err){ 
     return res.send(500, err); 
    } 
    return res.status(200).send({place: place}); 
}); 


}); 

router.route('/place/:id') 

.get(function(req, res){ 
Place.findById(req.params.id, function(err, place){ 
    if(err) 
     return res.send(err); 
    res.json(place); 
}); 
}) 

.put(function(req, res){ 
Place.findById(req.params.id, function(err, place){ 
    if(err) 
     res.send(err); 
    place.name = req.body.name; 
    place.address = req.body.address; 
    place.created_at = req.body.created_at; 

    place.save(function(err, place){ 
     if(err) 
      res.send(err); 
     res.json(place); 


    }); 
}); 
}) 

.delete(function(req, res){ 
Place.findByIdAndRemove(req.params.id, function(err){ 
    if(err) 
     res.send(err); 
    res.json({message: 'Place removed!!!!!'}); 
}); 

}); 

module.exports = router; 

script.js

// script.js 

// create the module and name it scotchApp 
var app = angular.module('scotchApp', ['ngRoute', 'ngResource']); 

// configure our routes 
app.config(function($routeProvider){ 
    $routeProvider 

     // route for the home page 
     .when('/', { 
      templateUrl : 'home.html', 
      controller : 'mainController' 
     }) 

     // route for the about page 
     .when('/about', { 
      templateUrl : 'about.html', 
      controller : 'aboutController' 
     }) 

     // route for the contact page 
     .when('/contact', { 
      templateUrl : 'contact.html', 
      controller : 'contactController' 
     }) 

     //route for the contact page 
     .when('/register', { 
      templateUrl : 'register.html', 
      controller : 'registerController' 
     }) 

     //route for the login page 
     .when('/sign-in', { 
      templateUrl : 'sign-in.html', 
      controller : 'signinController' 
    }); 
}); 

app.factory('placeService', function($resource){ 
    return $resource('/api/place'); 
}); 
// create the controller and inject Angular's $scope 
app.controller('mainController', function($scope, $rootScope, $http) { 
    // create a message to display in our view 

      /* $scope.place = placeService.query(); 
      $scope.newPlace = {name: '', address: '', created_at: ''}; 

      $scope.place = function(){ 
       $scope.newPlace.created_by = $rootScope.current_user; 
       $scope.newPlace.created_at = Date.now(); 
       placeService.save($scope.newPlace, function(){ $scope.place =  placeService.query(); 
       $scope.newPlace = {name: '', address: '', created_at: ''}; 
       }); */ 
    $http.get('/api/place').success(function(data){ 
     $scope.place = req.data.place; 
     console.log(data); 


    }); 
}); 


app.controller('placesController', function($scope, $http) { 
    var url = 'http://localhost:8080/api/places'; 
    $http.get(url).success(function(data){ 
     console.log(data); 
    }); 
}); 

app.controller('aboutController', function($scope) { 
    $scope.message = 'Look! I am an about page.'; 
}); 

app.controller('contactController', function($scope) { 
    $scope.message = 'Contact us! JK. This is just a demo.'; 
}); 

app.controller('registerController', function($scope) { 
    $scope.message = 'Join us! JK. This is just a demo.'; 
}); 

app.controller('signinController', function($scope) { 
    $scope.message = 'Login. This is just a demo.'; 
}); 

그렇게 내 작은 실수를 수정하시기 바랍니다, 프로그래밍에 초보자에서

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/myproject'); 
require('./model/models') 
var index = require('./routes/index'); 
var api = require('./routes/api'); 


var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/index', index); 
app.use('/api', api); 


var port = process.env.PORT || 8080; 
// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handlers 

// development error handler 
// will print stacktrace 
if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message, 
    error: err 
}); 
    }); 
} 

// production error handler 
// no stacktraces leaked to user 
app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
    message: err.message, 
    error: {} 
}); 
}); 

app.listen(port);    

// shoutout to the user      
console.log('Magic happens on port ' + port); 
module.exports = app; 

암을 app.js.

답변

0

constant.js 파일을 만듭니다 (모든 상수 및 API URL이 유지됨). 서비스/공장을 만듭니다. Service/factory는 API 호출을 통해 데이터를 제공합니다. http 호출은 모두 내부에 보관하십시오 (내부 서비스). 각 컨트롤러에 대해 별도의 서비스를 제공하거나 모든 컨트롤러에 대해 단일 서비스를 제공 할 수 있습니다 (원하는 코드에 따라 다름). 컨트롤러에서 : 콜 서비스 메소드를 사용하여 데이터를 가져옵니다. 서비스 약속을 반환합니다. 그 약속을 사용하면 컨트롤러에서 데이터를 얻을 수 있습니다. $ http call call promise (각도로 묶여 있음).

(function (module) { 
       var appConstants = { 

        empApi: { 
         employee: 'your url to call(http://something.com/sfsadf)', 
        }, 

       }; 
       module.constant('appConstants', appConstants); 

      }(angular.module("app"))); 


     (function (module) { 

      module.factory("dataService", ["$http", "appConstants", 
function ($http, appConstants) { 

       this.getEmp = function() { 
        return $http.get(appConstants.empApi.employee); 
       }; 

       return this; 
      }]); 

     }(angular.module("app"))); 


    (function (module) { 

     module.controller("empController", ["dataService", function (dataService) {  
      var _this = this; 

      dataService.getEmp().then(function(result){ 
       _this.data = result.data; 
      }); 

     }]); 

    }(angular.module("app"))); 
+0

아래

예 그래서 내가 서비스 나 내가 그들을 필요 제어기에서 각 서비스를 분리하는 경우, 데이터를 제공하는 공장을 필요 수단? app.js 또는 api.js @RajRj – JAEL

+0

U는 원하는만큼의 서비스를 생성 할 수 있습니다. 필요할 때마다 컨트롤러에 주입하십시오. 컨트롤러에 서비스를 사용할 수있게되면 "서비스"내에 정의 된 메서드를 호출하여 "약속"을 반환 할 수 있습니다. "dataService"가 getEmp() 메소드가있는 내 SERVICE 인 예제를 공유했습니다. 컨트롤러에 "dataService"를 삽입하고 getEmp() 메소드를 호출하십시오 (예 : var then dataService.getEmp()). 이제 데이터를 가져올 수있는 PROMISE "THEN"이 있습니다. 더 명확하게하기 위해 예제를 따르십시오. 모든 서비스 JS 파일을 작성할 "services"폴더를 만들 수 있습니다 –

관련 문제