Sails.js Model / ORM introduce
-
Upload
- -
Category
Technology
-
view
8.779 -
download
3
description
Transcript of Sails.js Model / ORM introduce
![Page 1: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/1.jpg)
Sails.js Model / ORM introduce
![Page 3: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/3.jpg)
sails 0.10 beta
• sails-0.10.0-reference
• .done() vs. .exec()
• Model Associations
• sails console
• promises in core
![Page 4: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/4.jpg)
sails upgrade 0.10 beta
• npm i sails@beta -g
• npm i sails@beta -save
• npm i sails-mysql@beta -save
• npm i sails-mongo@beta -save
![Page 5: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/5.jpg)
• config/connections.js • addconfig/models.js
DB Setting
![Page 6: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/6.jpg)
![Page 7: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/7.jpg)
Why you need ORM ?
![Page 8: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/8.jpg)
How Create Table? traditional way
![Page 9: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/9.jpg)
SHOW CREATE TABLE `post`; !ALTER TABLE `post` ADD `title` VARCHAR(100) NULL DEFAULT NULL AFTER `id`; !ALTER TABLE `post` ADD `content` TEXT DEFAULT NULL AFTER `title`;
MySQL
![Page 10: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/10.jpg)
MySQL
![Page 11: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/11.jpg)
SELECT * FROM `post` WHERE `id` = '1' LIMIT 1;
MySQL
![Page 12: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/12.jpg)
MySQL
![Page 13: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/13.jpg)
Terrible happened
• DB schema modify
• Multi tables join
• Migrate Table or Database
• Change adapter
• more ...
![Page 14: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/14.jpg)
Can we controller Model from Code???
![Page 15: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/15.jpg)
ORMObjective Orient Model
![Page 16: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/16.jpg)
Object Orented
![Page 17: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/17.jpg)
adpters
![Page 18: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/18.jpg)
one of best practices
![Page 19: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/19.jpg)
Sql & Nosql
![Page 21: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/21.jpg)
WaterlineSails.js ORM module
![Page 22: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/22.jpg)
Model
• file path -> api/models
• Capital naming
• Set schema and rule.
• ORM like
• you can use multi-adapter
![Page 23: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/23.jpg)
Model Associations
• sails 0.10 new Feature
• Many-to-Many
• One-to-Many
• One-to-One
![Page 24: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/24.jpg)
Disk database (default)
![Page 25: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/25.jpg)
Adapter support
• MySQL
• MongoDB
• Redis
• ...
• http://sailsjs.org/#!documentation/models
![Page 26: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/26.jpg)
Adapter config
![Page 27: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/27.jpg)
• config/connections.js • addconfig/models.js
DB Setting
![Page 28: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/28.jpg)
Attribute type• string
• text
• integer
• float
• date
• time
• datetime
• boolean
• binary
• array
• json
![Page 29: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/29.jpg)
Custom Defined Instance Methods
![Page 30: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/30.jpg)
example, api/models/Post.js
![Page 31: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/31.jpg)
example, api/models/Post.js
generate a table and column
![Page 32: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/32.jpg)
Auto migration
![Page 33: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/33.jpg)
example2, api/models/Post.js
insert a attribute in Post model
![Page 34: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/34.jpg)
Before and After
![Page 36: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/36.jpg)
![Page 37: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/37.jpg)
define Model Associations
![Page 38: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/38.jpg)
One to One
![Page 39: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/39.jpg)
One to Many
![Page 40: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/40.jpg)
Controller and Model
![Page 41: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/41.jpg)
example, controller call Post model
![Page 42: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/42.jpg)
example, controller call Post model
model name
![Page 43: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/43.jpg)
example, controller call Post model
model behavior
![Page 44: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/44.jpg)
example, controller call Post model
new data
![Page 45: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/45.jpg)
example, controller call Post model
success callback
& response
![Page 47: Sails.js Model / ORM introduce](https://reader034.fdocuments.us/reader034/viewer/2022052315/554bba46b4c9053a298b4c45/html5/thumbnails/47.jpg)
• User.create({name:"smlsun"}).exec(console.log);
• Post.create({title:"post", content:"body", user:1}).exec(console.log);
• Post.create({title:"post another", content:"body", user:1}).exec(console.log);
• Post.find().exec(console.log);
• Post.find().populate("user").exec(console.log);
• User.find().populate("posts").exec(console.log);
• Profile.create({email: "[email protected]", user:1}).exec(console.log)
• Profile.find().populate("user").exec(console.log);