Skip to content

Commit e48aee6

Browse files
committed
WIP: mongoose + services + entity all on server side
1 parent e64f52e commit e48aee6

File tree

6 files changed

+151
-17
lines changed

6 files changed

+151
-17
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,14 @@
3333
"@angular/router": "^4.2.4",
3434
"@types/express": "^4.0.37",
3535
"@types/mongodb": "^2.2.11",
36+
"@types/mongoose": "^4.7.21",
3637
"angular-in-memory-web-api": "^0.3.2",
3738
"core-js": "^2.4.1",
3839
"express": "^4.15.4",
3940
"lodash": "^4.17.4",
4041
"moment": "^2.18.1",
4142
"mongodb": "^2.2.31",
43+
"mongoose": "^4.11.9",
4244
"rxjs": "^5.4.2",
4345
"zone.js": "^0.8.14"
4446
},

server-src/models/hero.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { Schema, Document, Model } from 'mongoose';
2+
3+
interface IHero extends Document {
4+
id?: string;
5+
name: String;
6+
}
7+
8+
9+
10+
11+
export default mongoose.model<IVideoModel>('Video', VideoSchema);

server-src/server.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
import * as express from 'express';
2+
import {Application } from 'express';
3+
import {MongoConnectionService} from './services/db.services';
4+
import {HeroesEndpoint} from './heroes.endpoint';
25

3-
const app = express();
4-
// Run the app by serving the static files
5-
// in the dist directory
6-
app.use(express.static(__dirname + '/../../../dist'));
7-
// Start the app by listening on the default
8-
// Heroku port
9-
app.listen(process.env.PORT || 8081);
6+
class Server {
7+
app: Application = express();
8+
9+
constructor() {
10+
this.app.use(express.static(__dirname + '/../../../dist'));
11+
this.app.use('/heroes', HeroesEndpoint);
12+
this.app.listen(process.env.PORT || 8081);
13+
}
14+
}
15+
16+
const server: Server = new Server();

server-src/services/db.services.ts

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,30 @@
1-
import * as assert from 'assert';
2-
import {MongoClient } from 'mongodb';
1+
import {connect, Connection, connection} from 'mongoose';
32

3+
const mongoUrl = 'mongodb://admin:[email protected]:45293/app-test';
44

5-
const url = 'mongodb://admin:[email protected]:45293/app-test';
6-
MongoClient.connect(url, function(err, db) {
7-
assert.equal(null, err);
8-
console.log('Connected correctly to server.');
9-
db.close();
10-
});
5+
// Singleton
6+
export class MongoConnectionService {
7+
private static instance: MongoConnectionService;
8+
9+
db: Connection;
10+
11+
private constructor() {
12+
console.log('connect');
13+
connect(mongoUrl, {
14+
useMongoClient: true,
15+
});
16+
this.db = connection;
17+
this.db.on('error', console.error.bind(console, 'MongoDB connection error:'));
18+
}
19+
20+
static getInstance(): MongoConnectionService {
21+
if (!MongoConnectionService.instance) {
22+
MongoConnectionService.instance = new MongoConnectionService();
23+
}
24+
return MongoConnectionService.instance;
25+
}
26+
27+
public errorHandler(): void {
28+
console.log('oops an error');
29+
}
30+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import {Hero} from '../models/hero';
2+
3+
export class HeroesService {
4+
private static instance: HeroesService;
5+
6+
private constructor() {
7+
}
8+
9+
static getInstance(): HeroesService {
10+
if (!HeroesService.instance) {
11+
HeroesService.instance = new HeroesService();
12+
}
13+
return HeroesService.instance;
14+
}
15+
16+
public getNewHero(name: string): Hero {
17+
return new Hero({name: name});
18+
}
19+
}

yarn.lock

Lines changed: 77 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,13 +196,20 @@
196196
version "1.3.1"
197197
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.1.tgz#2cf42972d0931c1060c7d5fa6627fce6bd876f2f"
198198

199-
"@types/mongodb@^2.2.11":
199+
"@types/mongodb@*", "@types/mongodb@^2.2.11":
200200
version "2.2.11"
201201
resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-2.2.11.tgz#595cd869afa1c4cf6ee8935eb25a0783ab46e6aa"
202202
dependencies:
203203
"@types/bson" "*"
204204
"@types/node" "*"
205205

206+
"@types/mongoose@^4.7.21":
207+
version "4.7.21"
208+
resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-4.7.21.tgz#aea0363e01a64c33fda5a9e592d5d25734eca3ec"
209+
dependencies:
210+
"@types/mongodb" "*"
211+
"@types/node" "*"
212+
206213
"@types/node@*", "@types/node@^6.0.46", "@types/node@~6.0.60":
207214
version "6.0.87"
208215
resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.87.tgz#5ab5774f8351a33a935099fa6be850aa0b0ad564"
@@ -452,6 +459,12 @@ async-foreach@^0.1.3:
452459
version "0.1.3"
453460
resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
454461

462+
463+
version "2.1.4"
464+
resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4"
465+
dependencies:
466+
lodash "^4.14.0"
467+
455468
async@^0.9.0:
456469
version "0.9.2"
457470
resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
@@ -628,6 +641,10 @@ [email protected]:
628641
dependencies:
629642
minimist "^1.2.0"
630643

644+
645+
version "2.10.2"
646+
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.10.2.tgz#024a5517295308857f14f91f1106fc3b555f446b"
647+
631648
bluebird@^3.3.0, bluebird@^3.4.7:
632649
version "3.5.0"
633650
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
@@ -2298,6 +2315,10 @@ [email protected]:
22982315
version "2.16.3"
22992316
resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
23002317

2318+
2319+
version "2.0.0"
2320+
resolved "https://registry.yarnpkg.com/hooks-fixed/-/hooks-fixed-2.0.0.tgz#a01d894d52ac7f6599bbb1f63dfc9c411df70cba"
2321+
23012322
hosted-git-info@^2.1.4:
23022323
version "2.5.0"
23032324
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
@@ -2896,6 +2917,10 @@ jsprim@^1.2.2:
28962917
json-schema "0.2.3"
28972918
verror "1.10.0"
28982919

2920+
2921+
version "1.5.0"
2922+
resolved "https://registry.yarnpkg.com/kareem/-/kareem-1.5.0.tgz#e3e4101d9dcfde299769daf4b4db64d895d17448"
2923+
28992924
karma-chrome-launcher@~2.1.1:
29002925
version "2.1.1"
29012926
resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.1.1.tgz#216879c68ac04d8d5140e99619ba04b59afd46cf"
@@ -3310,14 +3335,48 @@ [email protected]:
33103335
bson "~1.0.4"
33113336
require_optional "~1.0.0"
33123337

3313-
mongodb@^2.2.31:
3338+
mongodb@2.2.31, mongodb@^2.2.31:
33143339
version "2.2.31"
33153340
resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-2.2.31.tgz#1940445c661e19217bb3bf8245d9854aaef548db"
33163341
dependencies:
33173342
es6-promise "3.2.1"
33183343
mongodb-core "2.1.15"
33193344
readable-stream "2.2.7"
33203345

3346+
mongoose@^4.11.9:
3347+
version "4.11.9"
3348+
resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-4.11.9.tgz#58f89a72e75674d9bcdfa4e65ebe1b49b4477637"
3349+
dependencies:
3350+
async "2.1.4"
3351+
bson "~1.0.4"
3352+
hooks-fixed "2.0.0"
3353+
kareem "1.5.0"
3354+
mongodb "2.2.31"
3355+
mpath "0.3.0"
3356+
mpromise "0.5.5"
3357+
mquery "2.3.1"
3358+
ms "2.0.0"
3359+
muri "1.2.2"
3360+
regexp-clone "0.0.1"
3361+
sliced "1.0.1"
3362+
3363+
3364+
version "0.3.0"
3365+
resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.3.0.tgz#7a58f789e9b5fd3c94520634157960f26bd5ef44"
3366+
3367+
3368+
version "0.5.5"
3369+
resolved "https://registry.yarnpkg.com/mpromise/-/mpromise-0.5.5.tgz#f5b24259d763acc2257b0a0c8c6d866fd51732e6"
3370+
3371+
3372+
version "2.3.1"
3373+
resolved "https://registry.yarnpkg.com/mquery/-/mquery-2.3.1.tgz#9ab36749714800ff0bb53a681ce4bc4d5f07c87b"
3374+
dependencies:
3375+
bluebird "2.10.2"
3376+
debug "2.6.8"
3377+
regexp-clone "0.0.1"
3378+
sliced "0.0.5"
3379+
33213380
33223381
version "0.7.1"
33233382
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
@@ -3341,6 +3400,10 @@ multicast-dns@^6.0.1:
33413400
dns-packet "^1.0.1"
33423401
thunky "^0.1.0"
33433402

3403+
3404+
version "1.2.2"
3405+
resolved "https://registry.yarnpkg.com/muri/-/muri-1.2.2.tgz#63198132650db08a04cc79ccd00dd389afd2631c"
3406+
33443407
33453408
version "0.0.7"
33463409
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
@@ -4372,6 +4435,10 @@ regex-cache@^0.4.2:
43724435
is-equal-shallow "^0.1.3"
43734436
is-primitive "^2.0.0"
43744437

4438+
4439+
version "0.0.1"
4440+
resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-0.0.1.tgz#a7c2e09891fdbf38fbb10d376fb73003e68ac589"
4441+
43754442
regexpu-core@^1.0.0:
43764443
version "1.0.0"
43774444
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
@@ -4747,6 +4814,14 @@ silent-error@^1.0.0:
47474814
dependencies:
47484815
debug "^2.2.0"
47494816

4817+
4818+
version "0.0.5"
4819+
resolved "https://registry.yarnpkg.com/sliced/-/sliced-0.0.5.tgz#5edc044ca4eb6f7816d50ba2fc63e25d8fe4707f"
4820+
4821+
4822+
version "1.0.1"
4823+
resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41"
4824+
47504825
47514826
version "1.0.9"
47524827
resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"

0 commit comments

Comments
 (0)