使用 JavaScript 的 TypeORM



TypeORM 預設支援的語言是 TypeScript。由於 TypeScript 支援靜態型別、類和裝飾器,因此定義實體及其屬性很容易。同時,在某些首選語言為 JavaScript 的專案中,JavaScript 也是必要的。TypeORM 也完全支援 JavaScript 語言。TypeORM 支援 es5 和 es6 兩種 JavaScript 版本。

在本章中,讓我們學習如何在 JavaScript ES5 (ECMAScript 5) 中編寫 TypeORM 應用程式。

開啟命令提示符並轉到您的工作區。

cd /path/to/workspace/

執行以下命令以建立 TypeORM 專案。

typeorm init --name typeorm-javascript-student-app --database mysql

開啟package.json檔案以刪除 typescript 引用。

原始

{ 
   "name": "typeorm-javascript-student-app", "version": "0.0.1", 
   "description": "Awesome project developed with TypeORM.", "devDependencies": { 
      "ts-node": "3.3.0", "@types/node": "^8.0.29", "typescript": "3.3.3333" 
   }, 
   "dependencies": { 
      "typeorm": "0.2.24", "reflect-metadata": "^0.1.10", "mysql": "^2.14.1" 
   }, 
   "scripts": { 
      "start": "ts-node src/index.ts" } 
}

更新後

{ 
   "name": "typeorm-javascript-student-app", "version": "0.0.1", 
   "description": "Awesome project developed with TypeORM.", "dependencies": { 
      "typeorm": "0.2.24",
      "mysql": "^2.14.1" 
   }, 
   "scripts": { 
   "start": "node src/index.js" 
   } 
}

這裡:

  • 刪除了devDependencies部分和dependencies部分中與 typescript 相關的包。
  • 將啟動指令碼更改為指向 javascript 程式碼而不是 typescript 程式碼。

執行以下命令以安裝必要的包。

npm install

刪除tsconfig.json和 index.ts 檔案。

刪除 entity 資料夾內的 User.ts 檔案,然後建立 JSON 格式的學生實體檔案 student.json,如下所示:

{ 
   "name": "Student", 
   "columns": { 
      "id": { 
         "primary": true, 
         "type": "int", 
         "generated": true 
      }, 
      "name": { 
         "type": "varchar" 
      }, 
      "age": { 
         "type": "integer" 
      } 
   } 
}

建立一個新檔案 src/index.js 並放入以下程式碼:

var typeorm = require("typeorm"); var EntitySchema = typeorm.EntitySchema; 

typeorm.createConnection({ 
   "type": "mysql", 
   "host": "localhost", 
   "port": 3306, 
   "username": "root", 
   "password": "123456", 
   "database": "typeorm_test_db",
   "synchronize": true, 
   "logging": false, 
   entities: [ new EntitySchema(require("./entity/student.json")) 
   ] 
}) 
.then(function(connection) { 
   return connection.getRepository("Student"); }) .then(function(studentRepository) { 
   var student = { 
      name: "Student1", 
      age: 18 
   }; 
   return studentRepository.save(student) .then(function(savedStudent) { console.log("Student has been successfully saved: ", savedStudent); 
   return studentRepository.find(); }) 
   .then(function(students) { console.log("All students: ", students); 
   return; 
   }) 
   .catch(function(error) { console.log("Error: ", error); return; 
   }) 
}) 
.catch(function(error) { console.log("Error: ", error) 
   return; });

這裡:

我們使用了相同的 typeORM 方法,除了以下提到的更改:

  • 使用EntitySchema配置學生實體。
  • 使用了 JavaScript Promise 概念 (then / catch / finally) 塊。

現在,使用以下命令執行應用程式:

npm start

應用程式將學生資訊插入資料庫,然後獲取資料庫中的所有學生並在控制檯中顯示,如下所示:

> typeorm-javascript-student-app@0.0.1 start /path/to/workspace/typeorm-javascript-student-app

> node src/index.js 

Student has been successfully saved: { name: 'Student1', age: 18, id: 1 } All students: [ { id: 1, name: 'Student1', age: 18 } ]
廣告
© . All rights reserved.