[MEAN Stack] First API -- 4. Organize app structure

The app structure

 

Front-end: app.js

复制代码
/**
 * Created by Answer1215 on 12/9/2014.
 */
'use strict';

function MainCtrl(PeopleService) {
    var vm = this;
    vm.people = [];
    vm.selectedPerson = {};

   vm.getPeople = PeopleService.getPeople().then(function(response) {
        vm.people = response.data;
    });

    vm.selectPerson = function(person) {
        PeopleService.getSelectedPerson(person).then(function(response) {
            vm.selectedPerson = response.data;
            vm.selectedPerson.fullName = response.data.firstName + " " + response.data.lastName;
        });

    }

}

function PeopleService($http) {

    var PeopleService = {};
    PeopleService.getPeople = function() {
        return $http.get('http://localhost:3000/people');
    }

    PeopleService.getSelectedPerson = function(person) {
        return $http.get('http://localhost:3000/people/'+person._id);
    }

    return PeopleService;
}

angular.module('app',[
    'ngResource'
])
    .controller('MainCtrl', MainCtrl)
    .service('PeopleService', PeopleService);
复制代码
复制代码
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css"/>
</head>
<body ng-app="app">

<div class="row" ng-controller="MainCtrl as vm">
    <div class="col-xs-4">
        <ul>
            <li ng-repeat="person in vm.people" ng-click="vm.selectPerson(person)">{{person.firstName}}</li>
        </ul>
    </div>
    <div class="col-xs-6">
        <h2>{{vm.selectedPerson.fullName}}</h2>
        <span>{{vm.selectedPerson.email}}</span>
    </div>
</div>
    <script src="bower_components/angular/angular.min.js"></script>
    <script src="bower_components/angular-resource/angular-resource.min.js"></script>
    <script src="app.js"></script>
</body>
</html>
复制代码

 

Backend:

server.js

复制代码
'use strict';

var express = require('express');
var cors = require("cors");
var app = express();
app.use(cors());
var people = require('./controller/people');

app.get('/people', people.getAll);
app.get('/people/:id', people.get);

app.listen(3000);
复制代码

controller/people.js

复制代码
/**
 * Created by Answer1215 on 12/26/2014.
 */
var model = require('../model/people');

exports.getAll = function(request, response){
    model.getAll(function(err, data) {
        if(err) response.json(503, {error: true});

        response.json(200, data);
    });
}

exports.get = function(request, response){
    var id = request.params.id;
    model.get(id, function(err, data) {
        if(err) response.json(503, {error: true});

        response.json(200, data);
    });
}
复制代码

model/people.js

复制代码
/**
 * Created by Answer1215 on 12/26/2014.
 */
var mongoose = require('../lib/mogoose');

var personSchema = {
    firstName:String,
    lastName:String,
    email:String
};

//create a person model, and rename db as people
var Person = mongoose.model('Person', personSchema);

exports.getAll = function(callback) {
    Person.find().select("firstName").exec(function(err, data) {
       // response.json(200, data);
        callback(err, data);
    });
}

exports.get = function(id, callback){
    Person.findById(id, function(err, data) {
        //response.send(data);
        callback(err, data);
    });
}
复制代码

lib/mogoose.js

/**
 * Created by Answer1215 on 12/26/2014.
 */
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/simple');

module.exports = mongoose;

 

posted @   Zhentiw  阅读(376)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示