diff --git a/README.md b/README.md index 201087c..5a087a6 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,5 @@ 3. run `node src/app1-es5/index.js` to run simple example of usage with ES5. 4. run `node src/app2-es5-json-schemas/index.js` to run example of usage with ES5 + schemas defined in a JSON. 5. run `node src/app3-es6/index.js` to run simple example of usage with ES6. + +If you are looking for more advanced JavaScript example with latest ES features and Babel used see [here](https://github.com/typeorm/babel-example). \ No newline at end of file diff --git a/package.json b/package.json index 23e3fef..959bcc1 100644 --- a/package.json +++ b/package.json @@ -21,12 +21,8 @@ "typeorm-sample", "typeorm-example" ], - "devDependencies": { - "typescript": "^2.1.5" - }, "dependencies": { - "pg": "^6.1.0", - "reflect-metadata": "^0.1.9", - "typeorm": "0.0.8" + "mysql": "^2.15.0", + "typeorm": "^0.2.0" } } diff --git a/src/app1-es5/entity/Category.js b/src/app1-es5/entity/Category.js index 3ebbc3f..28c90c9 100644 --- a/src/app1-es5/entity/Category.js +++ b/src/app1-es5/entity/Category.js @@ -7,7 +7,7 @@ module.exports = { generated: true }, name: { - type: "string" + type: "varchar" } } }; \ No newline at end of file diff --git a/src/app1-es5/entity/Post.js b/src/app1-es5/entity/Post.js index 9f31ee3..4e3167f 100644 --- a/src/app1-es5/entity/Post.js +++ b/src/app1-es5/entity/Post.js @@ -7,7 +7,7 @@ module.exports = { generated: true }, title: { - type: "string" + type: "varchar" }, text: { type: "text" @@ -18,7 +18,7 @@ module.exports = { target: "Category", type: "many-to-many", joinTable: true, - cascadeInsert: true + cascade: true } } }; \ No newline at end of file diff --git a/src/app1-es5/index.js b/src/app1-es5/index.js index 86fbf25..4e1dc21 100644 --- a/src/app1-es5/index.js +++ b/src/app1-es5/index.js @@ -1,19 +1,18 @@ var typeorm = require("typeorm"); +var EntitySchema = typeorm.EntitySchema; typeorm.createConnection({ - driver: { - type: "postgres", - host: "localhost", - port: 5432, - username: "test", - password: "admin", - database: "test" - }, - entitySchemas: [ - require("./entity/Post"), - require("./entity/Category") - ], - autoSchemaSync: true + type: "mysql", + host: "localhost", + port: 3306, + username: "test", + password: "test", + database: "test", + synchronize: true, + entities: [ + new EntitySchema(require("./entity/Post")), + new EntitySchema(require("./entity/Category")), + ] }).then(function (connection) { var category1 = { @@ -32,7 +31,7 @@ typeorm.createConnection({ }; var postRepository = connection.getRepository("Post"); - postRepository.persist(post) + postRepository.save(post) .then(function(savedPost) { console.log("Post has been saved: ", savedPost); console.log("Now lets load all posts: "); diff --git a/src/app2-es5-json-schemas/entity/category.json b/src/app2-es5-json-schemas/entity/category.json index 155fb16..9f47d43 100644 --- a/src/app2-es5-json-schemas/entity/category.json +++ b/src/app2-es5-json-schemas/entity/category.json @@ -7,7 +7,7 @@ "generated": true }, "name": { - "type": "string" + "type": "varchar" } } } \ No newline at end of file diff --git a/src/app2-es5-json-schemas/entity/post.json b/src/app2-es5-json-schemas/entity/post.json index 110e9f3..53e8d8d 100644 --- a/src/app2-es5-json-schemas/entity/post.json +++ b/src/app2-es5-json-schemas/entity/post.json @@ -7,7 +7,7 @@ "generated": true }, "title": { - "type": "string" + "type": "varchar" }, "text": { "type": "text" @@ -18,7 +18,7 @@ "target": "Category", "type": "many-to-many", "joinTable": true, - "cascadeInsert": true + "cascade": true } } } \ No newline at end of file diff --git a/src/app2-es5-json-schemas/index.js b/src/app2-es5-json-schemas/index.js index 2d432ab..3603086 100644 --- a/src/app2-es5-json-schemas/index.js +++ b/src/app2-es5-json-schemas/index.js @@ -1,18 +1,18 @@ var typeorm = require("typeorm"); +var EntitySchema = typeorm.EntitySchema; typeorm.createConnection({ - driver: { - type: "postgres", - host: "localhost", - port: 5432, - username: "test", - password: "admin", - database: "test" - }, - entitySchemas: [ - __dirname + "/entity/*.json" - ], - autoSchemaSync: true + type: "mysql", + host: "localhost", + port: 3306, + username: "test", + password: "test", + database: "test", + synchronize: true, + entities: [ + new EntitySchema(require("./entity/post.json")), + new EntitySchema(require("./entity/category.json")), + ] }).then(function (connection) { var category1 = { @@ -31,7 +31,7 @@ typeorm.createConnection({ }; var postRepository = connection.getRepository("Post"); - postRepository.persist(post) + postRepository.save(post) .then(function(savedPost) { console.log("Post has been saved: ", savedPost); console.log("Now lets load all posts: "); diff --git a/src/app3-es6/entity/CategorySchema.js b/src/app3-es6/entity/CategorySchema.js index 9158a0a..eed3897 100644 --- a/src/app3-es6/entity/CategorySchema.js +++ b/src/app3-es6/entity/CategorySchema.js @@ -1,5 +1,8 @@ -const Category = require("../model/Category"); // import {Category} from "../model/Category"; -const CategorySchema = { +const EntitySchema = require("typeorm").EntitySchema; // import {EntitySchema} from "typeorm"; +const Category = require("../model/Category").Category; // import {Category} from "../model/Category"; + +module.exports = new EntitySchema({ + name: "Category", target: Category, columns: { id: { @@ -8,11 +11,7 @@ const CategorySchema = { generated: true }, name: { - type: "string" + type: "varchar" } } -}; - -module.exports = { - CategorySchema: CategorySchema -}; \ No newline at end of file +}); \ No newline at end of file diff --git a/src/app3-es6/entity/PostSchema.js b/src/app3-es6/entity/PostSchema.js index 7193cf3..f9b7b56 100644 --- a/src/app3-es6/entity/PostSchema.js +++ b/src/app3-es6/entity/PostSchema.js @@ -1,6 +1,9 @@ -const Post = require("../model/Post"); // import {Post} from "../model/Post"; -const Category = require("../model/Category"); // import {Category} from "../model/Category"; -const PostSchema = { +const EntitySchema = require("typeorm").EntitySchema; // import {EntitySchema} from "typeorm"; +const Post = require("../model/Post").Post; // import {Post} from "../model/Post"; +const Category = require("../model/Category").Category; // import {Category} from "../model/Category"; + +module.exports = new EntitySchema({ + name: "Post", target: Post, columns: { id: { @@ -9,7 +12,7 @@ const PostSchema = { generated: true }, title: { - type: "string" + type: "varchar" }, text: { type: "text" @@ -17,14 +20,10 @@ const PostSchema = { }, relations: { categories: { - target: Category, + target: "Category", type: "many-to-many", joinTable: true, - cascadeInsert: true + cascade: true } } -}; - -module.exports = { - PostSchema: PostSchema -}; \ No newline at end of file +}); \ No newline at end of file diff --git a/src/app3-es6/index.js b/src/app3-es6/index.js index b884214..7fe6ccb 100644 --- a/src/app3-es6/index.js +++ b/src/app3-es6/index.js @@ -1,40 +1,47 @@ const typeorm = require("typeorm"); // import * as typeorm from "typeorm"; -const Post = require("./model/Post"); // import {Post} from "./model/Post"; -const Category = require("./model/Category"); // import {Category} from "./model/Category"; +const Post = require("./model/Post").Post; // import {Post} from "./model/Post"; +const Category = require("./model/Category").Category; // import {Category} from "./model/Category"; typeorm.createConnection({ - driver: { - type: "postgres", - host: "localhost", - port: 5432, - username: "test", - password: "admin", - database: "test" - }, + type: "mysql", + host: "localhost", + port: 3306, + username: "test", + password: "test", + database: "test", + synchronize: true, + logging: false, entities: [ - __dirname + "/entity/*.js" - ], - autoSchemaSync: true + require("./entity/PostSchema"), + require("./entity/CategorySchema") + ] }).then(function (connection) { - console.log(connection); - let post = new Post(); - post.title = "Control flow based type analysis"; - post.text = "TypeScript 2.0 implements a control flow-based type analysis for local variables and parameters."; - post.categories = [new Category(0, "TypeScript"), new Category(0, "Programming")]; + const category1 = new Category(0, "TypeScript"); + const category2 = new Category(0, "Programming"); - let postRepository = connection.getRepository(Post); - postRepository.persist(post) - .then(function(savedPost) { - console.log("Post has been saved: ", savedPost); - console.log("Now lets load all posts: "); + return connection + .manager + .save([category1, category2]) + .then(() => { - return postRepository.find(); - }) - .then(function(allPosts) { - console.log("All posts: ", allPosts); - }); + let post = new Post(); + post.title = "Control flow based type analysis"; + post.text = "TypeScript 2.0 implements a control flow-based type analysis for local variables and parameters."; + post.categories = [category1, category2]; + + let postRepository = connection.getRepository(Post); + postRepository.save(post) + .then(function(savedPost) { + console.log("Post has been saved: ", savedPost); + console.log("Now lets load all posts: "); + return postRepository.find(); + }) + .then(function(allPosts) { + console.log("All posts: ", allPosts); + }); + }); }).catch(function(error) { console.log("Error: ", error);