1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | 'use strict';
|
7 |
|
8 | const DataSource = require('../../loopback-datasource-juggler').DataSource;
|
9 | const ModelBuilder = require('../../loopback-datasource-juggler').ModelBuilder;
|
10 | const ds = new DataSource('memory');
|
11 |
|
12 |
|
13 | const Post = ds.define('Post', {
|
14 | title: {type: String, length: 255},
|
15 | content: {type: DataSource.Text},
|
16 | date: {type: Date, default: function() {
|
17 | return new Date;
|
18 | }},
|
19 | timestamp: {type: Number, default: Date.now},
|
20 | published: {type: Boolean, default: false, index: true},
|
21 | });
|
22 |
|
23 |
|
24 | const User = ds.define('User', {
|
25 | name: String,
|
26 | bio: DataSource.Text,
|
27 | approved: Boolean,
|
28 | joinedAt: Date,
|
29 | age: Number,
|
30 | });
|
31 |
|
32 | const Group = ds.define('Group', {name: String});
|
33 |
|
34 |
|
35 | User.prototype.getNameAndAge = function() {
|
36 | return this.name + ', ' + this.age;
|
37 | };
|
38 |
|
39 | const user = new User({name: 'Joe'});
|
40 | console.log(user);
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 | User.hasMany(Post, {as: 'posts', foreignKey: 'userId'});
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 | Post.belongsTo(User, {as: 'author', foreignKey: 'userId'});
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 | User.hasAndBelongsToMany('groups');
|
60 |
|
61 | const user2 = new User({name: 'Smith', age: 14});
|
62 | user2.save(function(err) {
|
63 | console.log(user2);
|
64 | const post = user2.posts.build({title: 'Hello world'});
|
65 | post.save(function(err, data) {
|
66 | console.log(err ? err : data);
|
67 | });
|
68 | });
|
69 |
|
70 | Post.findOne({where: {published: false}, order: 'date DESC'}, function(err, data) {
|
71 | console.log(data);
|
72 | });
|
73 |
|
74 | User.create({name: 'Jeff', age: 12}, function(err, data) {
|
75 | if (err) {
|
76 | console.log(err);
|
77 | return;
|
78 | }
|
79 | console.log(data);
|
80 | const post = data.posts.build({title: 'My Post'});
|
81 | console.log(post);
|
82 | });
|
83 |
|
84 | User.create({name: 'Ray'}, function(err, data) {
|
85 | console.log(data);
|
86 | });
|
87 |
|
88 | User.scope('minors', {where: {age: {lte: 16}}, include: 'posts'});
|
89 | User.minors(function(err, kids) {
|
90 | console.log('Kids: ', kids);
|
91 | });
|
92 |
|
93 | const Article = ds.define('Article', {title: String});
|
94 | const Tag = ds.define('Tag', {name: String});
|
95 | Article.hasAndBelongsToMany('tags');
|
96 |
|
97 | Article.create(function(e, article) {
|
98 | article.tags.create({name: 'popular'}, function(err, data) {
|
99 | Article.findOne(function(e, article) {
|
100 | article.tags(function(e, tags) {
|
101 | console.log(tags);
|
102 | });
|
103 | });
|
104 | });
|
105 | });
|
106 |
|
107 |
|
108 | const modelBuilder = new ModelBuilder();
|
109 |
|
110 | const Color = modelBuilder.define('Color', {
|
111 | name: String,
|
112 | });
|
113 |
|
114 |
|
115 | ds.attach(Color);
|
116 |
|
117 | Color.create({name: 'red'});
|
118 | Color.create({name: 'green'});
|
119 | Color.create({name: 'blue'});
|
120 |
|
121 | Color.all(function(err, colors) {
|
122 | console.log(colors);
|
123 | });
|
124 |
|