├── .gitignore ├── README.md ├── package.json └── src ├── app1-es5 ├── entity │ ├── Category.js │ └── Post.js └── index.js ├── app2-es5-json-schemas ├── entity │ ├── category.json │ └── post.json └── index.js └── app3-es6 ├── entity ├── CategorySchema.js └── PostSchema.js ├── index.js └── model ├── Category.js └── Post.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Example how to use TypeORM with JavaScript 2 | 3 | 1. clone repository 4 | 2. run `npm i` 5 | 3. run `node src/app1-es5/index.js` to run simple example of usage with ES5. 6 | 4. run `node src/app2-es5-json-schemas/index.js` to run example of usage with ES5 + schemas defined in a JSON. 7 | 5. run `node src/app3-es6/index.js` to run simple example of usage with ES6. 8 | 9 | If you are looking for more advanced JavaScript example with latest ES features and Babel used see [here](https://github.com/typeorm/babel-example). -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "typeorm-javascript-example", 3 | "version": "0.0.1", 4 | "description": "Example how to use TypeORM with JavaScript - ES5, ES6, ES7, ESNext.", 5 | "license": "MIT", 6 | "readmeFilename": "README.md", 7 | "author": { 8 | "name": "Umed Khudoiberdiev", 9 | "email": "pleerock.me@gmail.com" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "https://github.com/typeorm/javascript-example.git" 14 | }, 15 | "bugs": { 16 | "url": "https://github.com/typeorm/javascript-example/issues" 17 | }, 18 | "tags": [ 19 | "orm", 20 | "javascript-orm", 21 | "typeorm-sample", 22 | "typeorm-example" 23 | ], 24 | "dependencies": { 25 | "mysql": "^2.15.0", 26 | "typeorm": "^0.2.0" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/app1-es5/entity/Category.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "Category", 3 | columns: { 4 | id: { 5 | primary: true, 6 | type: "int", 7 | generated: true 8 | }, 9 | name: { 10 | type: "varchar" 11 | } 12 | } 13 | }; -------------------------------------------------------------------------------- /src/app1-es5/entity/Post.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "Post", 3 | columns: { 4 | id: { 5 | primary: true, 6 | type: "int", 7 | generated: true 8 | }, 9 | title: { 10 | type: "varchar" 11 | }, 12 | text: { 13 | type: "text" 14 | } 15 | }, 16 | relations: { 17 | categories: { 18 | target: "Category", 19 | type: "many-to-many", 20 | joinTable: true, 21 | cascade: true 22 | } 23 | } 24 | }; -------------------------------------------------------------------------------- /src/app1-es5/index.js: -------------------------------------------------------------------------------- 1 | var typeorm = require("typeorm"); 2 | var EntitySchema = typeorm.EntitySchema; 3 | 4 | typeorm.createConnection({ 5 | type: "mysql", 6 | host: "localhost", 7 | port: 3306, 8 | username: "test", 9 | password: "test", 10 | database: "test", 11 | synchronize: true, 12 | entities: [ 13 | new EntitySchema(require("./entity/Post")), 14 | new EntitySchema(require("./entity/Category")), 15 | ] 16 | }).then(function (connection) { 17 | 18 | var category1 = { 19 | name: "TypeScript" 20 | }; 21 | var category2 = { 22 | name: "Programming" 23 | }; 24 | 25 | var post = { 26 | title: "Control flow based type analysis", 27 | text: "TypeScript 2.0 implements a control flow-based type analysis for local variables and parameters.", 28 | categories: [ 29 | category1, category2 30 | ] 31 | }; 32 | 33 | var postRepository = connection.getRepository("Post"); 34 | postRepository.save(post) 35 | .then(function(savedPost) { 36 | console.log("Post has been saved: ", savedPost); 37 | console.log("Now lets load all posts: "); 38 | 39 | return postRepository.find(); 40 | }) 41 | .then(function(allPosts) { 42 | console.log("All posts: ", allPosts); 43 | }); 44 | 45 | 46 | }).catch(function(error) { 47 | console.log("Error: ", error); 48 | }); -------------------------------------------------------------------------------- /src/app2-es5-json-schemas/entity/category.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Category", 3 | "columns": { 4 | "id": { 5 | "primary": true, 6 | "type": "int", 7 | "generated": true 8 | }, 9 | "name": { 10 | "type": "varchar" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /src/app2-es5-json-schemas/entity/post.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Post", 3 | "columns": { 4 | "id": { 5 | "primary": true, 6 | "type": "int", 7 | "generated": true 8 | }, 9 | "title": { 10 | "type": "varchar" 11 | }, 12 | "text": { 13 | "type": "text" 14 | } 15 | }, 16 | "relations": { 17 | "categories": { 18 | "target": "Category", 19 | "type": "many-to-many", 20 | "joinTable": true, 21 | "cascade": true 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/app2-es5-json-schemas/index.js: -------------------------------------------------------------------------------- 1 | var typeorm = require("typeorm"); 2 | var EntitySchema = typeorm.EntitySchema; 3 | 4 | typeorm.createConnection({ 5 | type: "mysql", 6 | host: "localhost", 7 | port: 3306, 8 | username: "test", 9 | password: "test", 10 | database: "test", 11 | synchronize: true, 12 | entities: [ 13 | new EntitySchema(require("./entity/post.json")), 14 | new EntitySchema(require("./entity/category.json")), 15 | ] 16 | }).then(function (connection) { 17 | 18 | var category1 = { 19 | name: "TypeScript" 20 | }; 21 | var category2 = { 22 | name: "Programming" 23 | }; 24 | 25 | var post = { 26 | title: "Control flow based type analysis", 27 | text: "TypeScript 2.0 implements a control flow-based type analysis for local variables and parameters.", 28 | categories: [ 29 | category1, category2 30 | ] 31 | }; 32 | 33 | var postRepository = connection.getRepository("Post"); 34 | postRepository.save(post) 35 | .then(function(savedPost) { 36 | console.log("Post has been saved: ", savedPost); 37 | console.log("Now lets load all posts: "); 38 | 39 | return postRepository.find(); 40 | }) 41 | .then(function(allPosts) { 42 | console.log("All posts: ", allPosts); 43 | }); 44 | 45 | 46 | }).catch(function(error) { 47 | console.log("Error: ", error); 48 | }); -------------------------------------------------------------------------------- /src/app3-es6/entity/CategorySchema.js: -------------------------------------------------------------------------------- 1 | const EntitySchema = require("typeorm").EntitySchema; // import {EntitySchema} from "typeorm"; 2 | const Category = require("../model/Category").Category; // import {Category} from "../model/Category"; 3 | 4 | module.exports = new EntitySchema({ 5 | name: "Category", 6 | target: Category, 7 | columns: { 8 | id: { 9 | primary: true, 10 | type: "int", 11 | generated: true 12 | }, 13 | name: { 14 | type: "varchar" 15 | } 16 | } 17 | }); -------------------------------------------------------------------------------- /src/app3-es6/entity/PostSchema.js: -------------------------------------------------------------------------------- 1 | const EntitySchema = require("typeorm").EntitySchema; // import {EntitySchema} from "typeorm"; 2 | const Post = require("../model/Post").Post; // import {Post} from "../model/Post"; 3 | const Category = require("../model/Category").Category; // import {Category} from "../model/Category"; 4 | 5 | module.exports = new EntitySchema({ 6 | name: "Post", 7 | target: Post, 8 | columns: { 9 | id: { 10 | primary: true, 11 | type: "int", 12 | generated: true 13 | }, 14 | title: { 15 | type: "varchar" 16 | }, 17 | text: { 18 | type: "text" 19 | } 20 | }, 21 | relations: { 22 | categories: { 23 | target: "Category", 24 | type: "many-to-many", 25 | joinTable: true, 26 | cascade: true 27 | } 28 | } 29 | }); -------------------------------------------------------------------------------- /src/app3-es6/index.js: -------------------------------------------------------------------------------- 1 | const typeorm = require("typeorm"); // import * as typeorm from "typeorm"; 2 | const Post = require("./model/Post").Post; // import {Post} from "./model/Post"; 3 | const Category = require("./model/Category").Category; // import {Category} from "./model/Category"; 4 | 5 | typeorm.createConnection({ 6 | type: "mysql", 7 | host: "localhost", 8 | port: 3306, 9 | username: "test", 10 | password: "test", 11 | database: "test", 12 | synchronize: true, 13 | logging: false, 14 | entities: [ 15 | require("./entity/PostSchema"), 16 | require("./entity/CategorySchema") 17 | ] 18 | }).then(function (connection) { 19 | 20 | const category1 = new Category(0, "TypeScript"); 21 | const category2 = new Category(0, "Programming"); 22 | 23 | return connection 24 | .manager 25 | .save([category1, category2]) 26 | .then(() => { 27 | 28 | let post = new Post(); 29 | post.title = "Control flow based type analysis"; 30 | post.text = "TypeScript 2.0 implements a control flow-based type analysis for local variables and parameters."; 31 | post.categories = [category1, category2]; 32 | 33 | let postRepository = connection.getRepository(Post); 34 | postRepository.save(post) 35 | .then(function(savedPost) { 36 | console.log("Post has been saved: ", savedPost); 37 | console.log("Now lets load all posts: "); 38 | 39 | return postRepository.find(); 40 | }) 41 | .then(function(allPosts) { 42 | console.log("All posts: ", allPosts); 43 | }); 44 | }); 45 | 46 | }).catch(function(error) { 47 | console.log("Error: ", error); 48 | }); -------------------------------------------------------------------------------- /src/app3-es6/model/Category.js: -------------------------------------------------------------------------------- 1 | /*export */ class Category { 2 | constructor(id, name) { 3 | this.id = id; 4 | this.name = name; 5 | } 6 | } 7 | 8 | module.exports = { 9 | Category: Category 10 | }; -------------------------------------------------------------------------------- /src/app3-es6/model/Post.js: -------------------------------------------------------------------------------- 1 | /*export */ class Post { 2 | constructor(id, title, text, categories) { 3 | this.id = id; 4 | this.title = title; 5 | this.text = text; 6 | this.categories = categories; 7 | } 8 | } 9 | 10 | module.exports = { 11 | Post: Post 12 | }; 13 | 14 | --------------------------------------------------------------------------------