Object-document Model Learning & Development Telerik Software Academy.

Slides:



Advertisements
Similar presentations
Creating Vector Graphics in the Web Learning & Development Telerik Software Academy.
Advertisements

Redundant Array of Independent Disks Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Writing HTML made easier Telerik School Academy HTML, CSS and JavaScript.
JavaScript Development Tools
Inside Windows Boot Process Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Guidelines to Preparing and Delivering an Elevator Pitch Presentation Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training.
Two basic algorithms for path searching in a graph Telerik Algo Academy Graph Algorithms.
About the Course Telerik Software Academy CSS Styling.
Binary, Decimal and Hexadecimal Numbers Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Eclipse + Android SDK, VS + Windows Phone SDK Telerik Software Academy Hybrid Mobile Applications.
Welcome to the JSON-stores world Learning & Development Telerik Software Academy.
Course Content, Evaluation, Exams Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Eclipse + Android SDK, VS + Windows Phone SDK Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Twitter Bootstrap Telerik Software Academy
Things you need to know George Georgiev Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.
Hamiltonian Cycle Penka Borukova Student at Telerik Academy.
Group Policy Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Reverse polish notation, Operations with big numbers Ivelin Rachev Telerik Corporation “Baba Tonka” High School of Mathematics.
April, Sofia, Telerik Software Academy Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Telerik Software Academy ASP.NET MVC.
Sales Processes, Sales Cycle and the Sales Force Margarita Antonova Volunteer Telerik Academy academy.telerik.com Business System Analyst Telerik.
Design Patterns that ease the design by identifying a simple way to realize relationships between entities. Antony Jekov Telerik Software Academy academy.telerik.com.
Using KendoUI for SPA Applications Learning & Development Telerik School Academy.
The way to create cross-platform apps Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
PEST Analysis, Porter’s 5 Forces and Sustainability Strategies Margarita Antonova Volunteer Telerik Academy academy.telerik.com Business System.
Searching for a Job, Writing CV and Cover Letter, Passing a Job Interview Telerik Academy for Software Engineers October 6 th 2012 – Sofia academy.telerik.com.
Drive Partitioning Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Telerik Software Academy Mobile apps for iPhone & iPad.
Google APIs and Facebook API Ivaylo Kenov Penka Borukova Telerik Corporation Telerik Academy Students.
The magic of virtual machines Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Web development with ExpressJS Learning & Development Telerik School Academy.
What it is, and does it work Learning & Development Telerik School Academy.
Device APIs with Xamarin
Telerik Software Academy Mobile apps for iPhone & iPad.
Academy.telerik.com Class of , Fall 2013.
Telerik Software Academy Databases.
Telerik Software Academy ASP.NET Web Forms.
What are WinJS and WinRT, Using the APIs in JavaScript George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer itgeorge.net.
JavaScript Modules and Patterns Telerik Software Academy
The True power of dynamic web pages Learning & Development Team Telerik Software Academy.
Approximate string matching Evlogi Hristov Telerik Corporation Student at Telerik Academy.
George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer itgeorge.net Using and creating Promises and Web Workers.
Xamarin with SQLite Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
Know your Tools! Telerik Software Academy JavaScript Fundamentals.
Ivaylo Kenov Telerik Software Academy Technical Assistant.
Developing "evil" JavaScript applications Learning & Development Telerik School Academy.
The PhoneGap History Doncho Minkov Telerik Software Academy Technical Trainer
Building Rock-Solid Software Svetlin Nakov Telerik Software Academy Manager Technical Training
Cultivating Professionals for Your Company The Success Story of Telerik Svetlin Nakov, PhD Manager Technical Training Telerik Corp.
Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
The way of the ViewModel and the Binding Learning & Development Telerik School Academy.
AJAX with ASP.NET MVC Telerik Software Academy
Nencho Nenchev Doroteya Agayna Telerik Software Academy Telerik Support Leads.
Installation, Sample Usage, Strings and OOP Telerik Software Academy Software Quality Assurance.
In JavaScript Learning & Development Telerik Software Academy.
Services in AngularJS Telerik Software Academy
Svetlin Nakov Telerik Software Academy Manager Technical Training
What is Roslyn and how can we use it? Telerik Academy Plus C# 6.0 and Roslyn Seminar.
Splitting JavaScript into Dependent Modules Learning & Development Telerik Software Academy.
Changing the default visualization of views in Xamarin.Forms Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
Telerik Software Academy HTML5.
What to expect from the new IDE Telerik Academy Plus Visual Studio 2015 and ASP.NET 5.
Hristian Hristov Telerik Corporation
I have to use math? I am out of here… Telerik School Academy Unity 2D Game Development.
Automating Windows Deployment Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Server Roles and Features Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Binary, Decimal and Hexadecimal Numbers Telerik Software Academy C# Fundamentals – Part 2.
Nikolay Kostov Telerik Software Academy academy.telerik.com Team Lead, Senior Developer and Trainer
Adding UI and Audio element Telerik Academy Plus Unity 2D Game Development.
Dimo Dimov Support Lead, Kendo UI Telerik Telerik Software Academy
Presentation transcript:

Object-document Model Learning & Development Telerik Software Academy

 MongoDB Native Overview  Mongoose Overview  Mongoose Models  Types of properties  Virtual methods  Property validation  Mongoose CRUD operations  Save, remove, find  Mongoose Queries

 Download MongoDB from the official web site:   Installers for all major platforms  When installed, MongoDB needs a driver to be usable with a specific platform  One to use with Node.js, another to use with.NET, etc…  Installing MongoDB driver for Node.js: $ npm install mongodb -g

 Once installed, the MongoDB must be started  Go to installation folder and run mongod $ cd path/to/mondodb/installation/folder $ mondgod  Or add mongod.exe to the PATH  When run, the MongoDB can be used from Node.js

 Create a server to host the database  The database is created using Node.js  The ' mongodb ' module is required var mongodb = require('mongodb'); var server = new mongodb.Server('localhost', 27017);  Create mongodb client that connects to the server var mongoClient = new mongodb.MongoClient(server);  Open connection to the mongodb server mongoClient.open(function(err, client){ var db = client.db('DATABASE_NAME'); var db = client.db('DATABASE_NAME'); //queries over the db //queries over the db});

 MongoDB module supports all kinds of queries over the data  Creating new documents  And adding records  Editing existing documents  And their records  Removing documents and records  Querying whole documents or parts of them

Live Demo

 Mongoose is a object-document model module in Node.js for MongoDB  Wraps the functionality of the native MongoDB driver  Exposes models to control the records in a doc  Supports validation on save  Extends the native queries

 Run the following from the CMD/Terminal $ npm install mongoose  In node  Load the module var mongoose = require('mongoose');  Connect to the database mongoose.connect(mongoDbPath);  Create models and persist data var Unit = mongoose.model('Unit', { type: String} ); new Unit({type: 'warrior'}).save(callback); //create Unit.find({type: 'warrior'}).exec(callback); //fetch

Live Demo

 Mongoose supports models  i.e. fixed types of documents  Used like object constructors  Needs a mongoose.Schema var modelSchema = new mongoose.Schema({ propString: String, propString: String, propNumber: Number, propNumber: Number, propObject: {}, propObject: {}, propArray: [], propArray: [], propBool: Boolean propBool: Boolean}); var Model = mongoose.model('Model', modelSchema);

 Each of the properties must have a type  Types can be Number, String, Boolean, array, object  Even nested objects var modelSchema = new mongoose.Schema({ propNested: { propNested: { propNestedNumber: Number, propNestedNumber: Number, propDoubleNested: { propDoubleNested: { propArr: [] propArr: [] }}); var Model = mongoose.model('Model', modelSchema);

Live Demo

 Since mongoose models are just JavaScript object constructors they can have methods  And these methods can be added to a schema  Use a different syntax than plain JS var unitSchema = new mongoose.Schema({…}); unitSchema.methods.move = function(to){ …}; var unit = new Unit({ … } ); unit.move({x: 5, y: 6});  And now can be called on a model of type Unit

Live Demo

 Yet, not all properties need to be persisted to the database  Mongoose provides a way to create properties, that are accessible on all models, but are not persisted to the database  And they have both getters and setters var unitSchema = new mongoose.Schema({…}); game.virtual('escapedTitle').get(function(){ … }); game.virtual('escapedTitle').set(function(title){ … });

Live Demo

 With Mongoose developers can define custom validation on their properties  i.e. validate records when trying to save var unitSchema = new mongoose.Schema({…}); unitSchema.path('position.x').validate(function(value){ return value>=0 && value =0 && value <= maxX;});unitSchema.path('position.y').validate(function(value){ return value>=0 && value =0 && value <= maxY;});

Live Demo

 Mongoose supports all the CRUD operations:  Create –> modelObj.save(callback)  Read –> Model.find().exec(callback)  Update –> modelObj.update(props, callback) –> Model.update(condition, props, cb)  Remove –> modelObj.remove(callback) –> Model.remove(condition, props, cb)

Live Demo

 Mongoose defines all queries of the native MongoDB driver in a more clear and useful way  Instead of: {$or: [{conditionOne: true}, {conditionTwo: true}] {conditionTwo: true}]}  Do:.where({conditionOne: true}).or({conditionTwo: true})

 Mongoose supports many queries:  For equality/non-equality  Selection of some properties  Sorting  Limit & skip  All queries are executed over the object returned by Model.find*()  Call.exec() at the end to run the query

Live Demo

 Having all model definitions in the main module is no good  That is the reason Node.js has modules in the first place  We can put each model in a different module, and load all models at start

Live Demo

форум програмиране, форум уеб дизайн курсове и уроци по програмиране, уеб дизайн – безплатно програмиране за деца – безплатни курсове и уроци безплатен SEO курс - оптимизация за търсачки уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop уроци по програмиране и уеб дизайн за ученици ASP.NET MVC курс – HTML, SQL, C#,.NET, ASP.NET MVC безплатен курс "Разработка на софтуер в cloud среда" BG Coder - онлайн състезателна система - online judge курсове и уроци по програмиране, книги – безплатно от Наков безплатен курс "Качествен програмен код" алго академия – състезателно програмиране, състезания ASP.NET курс - уеб програмиране, бази данни, C#,.NET, ASP.NET курсове и уроци по програмиране – Телерик академия курс мобилни приложения с iPhone, Android, WP7, PhoneGap free C# book, безплатна книга C#, книга Java, книга C# Николай Костов - блог за програмиране

1. Create a modules for Chat, that keep the data into a local MongoDB instance  The module should have the following functionality: var chatDb = require('chat-db'); //inserts a new user records into the DB chatDb.registerUser({user: 'DonchoMinkov', pass: '123456q'}); //inserts a new message record into the DB //the message has two references to users (from and to) chatDb.sendMessage({ from: 'DonchoMinkov', from: 'DonchoMinkov', to: 'NikolayKostov', to: 'NikolayKostov', text: 'Hey, Niki!' text: 'Hey, Niki!'}); //returns an array with all messages between two users chatDb.getMessages({ with: 'DonchoMinkov', with: 'DonchoMinkov', and: 'NikolayKostov and: 'NikolayKostov});