[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;
[MEAN Stack] First API -- 4. Organize app structure的更多相关文章
- [MEAN Stack] First API -- 7. Using Route Files to Structure Server Side API
Currently, the server.js is going way too long. In the real world application, it is likely that we ...
- [MEAN Stack] First API -- 5. Using $resource to setup REST app
Front-end changes: app.js: Uinsg $resource /** * Created by Answer1215 on 12/9/2014. */ 'use strict' ...
- [MEAN Stack] First API -- 3. Select by ID with Mongoose and Express
Mongoose allows you to easily select resources by ID from your MongoDB. This is an important aspect ...
- [MEAN Stack] First API -- 1. with Node.js, Express and MongoDB
Learn how to import data into your MongoDB and then use Express to serve a simple Node.js API. Impor ...
- Spark2.3(四十):如何使用java通过yarn api调度spark app,并根据appId监控任务,关闭任务,获取任务日志
背景: 调研过OOZIE和AZKABA,这种都是只是使用spark-submit.sh来提交任务,任务提交上去之后获取不到ApplicationId,更无法跟踪spark application的任务 ...
- 淘宝用户api 如何获得App Key和API Secret
下面我们通过截图的方式详细说明申请淘宝应用的步骤. 一.访问淘宝开放平台http://open.taobao.com/ 申请成为合作伙伴 二.填写个人信息申请入住 三.点击创建应用 四.填写应用名称, ...
- Andorid API Package ---> android.app
包名: android.app Added in API level 1 URL:http://developer. ...
- 基于腾讯云监控 API 的 Grafana App 插件开发
Tencent Cloud Monitor App Grafana 是一个开源的时序性统计和监控平台,支持例如 elasticsearch.graphite.influxdb 等众多的数据源,并以功能 ...
- 使用私有api统计ios app运行时间及次数
利用<iphone SprintBoard部分私有API总结>中提到的私有API,可以做很多越狱以前实现不了的事情. 比如,利用一个后台运行的app,监控该iphone上所有app的运行次 ...
随机推荐
- [转] arcgis Engine创建shp图层
小生 原文 arcgis Engine创建shp图层 以创建点图层为例.首先要得到保存文件的地址. SaveFileDialog saveFileDialog = new SaveFileDialog ...
- 1048 图的宽度优先遍历序列 c语言
描述 图(graph)是数据结构 G=(V,E),其中V是G中结点的有限非空集合,结点的偶对称为边(edge):E是G中边的有限集合.设V={0,1,2,……,n-1},图中的结点又称为顶点(vert ...
- mybatis返回HashMap结果类型与映射
<!-- 返回HashMap结果 类型--> <!-- 如果想返回JavaBean,只需将resultType设置为JavaBean的别名或全限定名 --> <!-- T ...
- Backbone.js developer 武汉 年薪8w-10w
1. 精通Backbone.js 2. 熟练Ajax.NoSQL.RESTful APIs 3. 了解Pusher.com和 Parse.com 4. 具有良好的沟通能力,学习能力,敬 ...
- restsharp发送服务端请求回传session
今天工作遇到这样一个场景,我需要获取一个游戏目录列表,这个列表接口在线上已经存在,但是这个接口需要登录认证后才能获取到,所以实现这个功能我打算分两部来做: 1.首先调登录接口,以写上session 2 ...
- [Hive - LanguageManual] VirtualColumns
Virtual Columns Simple Examples Virtual Columns Hive 0.8.0 provides support for two virtual columns: ...
- centos6.4 安装erlang
erlang官网: http://www.erlang.org 下载程序去年:
- 【VB技巧】VB静态调用与动态调用dll详解
本文“[VB技巧]VB静态调用与动态调用dll详解”,来自:Nuclear'Atk 网络安全研究中心,本文地址:http://lcx.cc/?i=489,转载请注明作者及出处! [[请注意]]:在以下 ...
- COS回应7大质疑
Apple过于封闭,没啥朋友,这家伙应该比较高傲,曾和Intel,IBM and so on..一起玩过!Google过于开放,狐朋狗友,友人泛滥,殃及ecosystem,弊端已显,祸水将至.COS奉 ...
- Java多线程编程模式实战指南:Active Object模式(下)
Active Object模式的评价与实现考量 Active Object模式通过将方法的调用与执行分离,实现了异步编程.有利于提高并发性,从而提高系统的吞吐率. Active Object模式还有个 ...