TypeORM con JavaScript

El idioma predeterminado admitido por TypeORM es TypeScript. Dado que TypeScript admite tipos, clases y decoradores estáticos, es fácil definir la entidad y sus atributos. Al mismo tiempo,JavaScript también es necesario en ciertos proyectos donde el idioma preferido es JavaScript. TypeORMtambién proporciona soporte completo para el lenguaje JavaScript. TypeORM admite los sabores es5 y es6 de JavaScript.

En este capítulo, aprendamos a escribir una aplicación TypeORM en JavaScript ES5 (ECMAScript 5).

Abra un símbolo del sistema y vaya a su espacio de trabajo.

cd /path/to/workspace/

Ejecute el siguiente comando para crear un proyecto TypeORM.

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

Abierto package.json archivo para eliminar las referencias de typecipt.

original

{ 
   "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" } 
}

actualizado

{ 
   "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" 
   } 
}

Aquí,

  • Retiró el devDependencies sección y paquete relacionado con mecanografiado en dependences sección.
  • Se modificó la secuencia de comandos de inicio para señalar código JavaScript en lugar de código mecanografiado.

Ejecute el siguiente comando para instalar los paquetes necesarios.

npm install

Eliminar tsconfig.json y archivo index.ts.

Elimine el archivo User.ts dentro de la carpeta de la entidad y luego cree la entidad de estudiante en formato json, student.json como se especifica a continuación -

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

Cree un nuevo archivo, src / index.js y coloque el siguiente código:

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; });

Aquí,

Hemos utilizado los mismos métodos typeORM, excepto los cambios mencionados a continuación,

  • Usado EntitySchema para configurar la entidad estudiante.
  • Se utilizaron bloques del concepto de promesa de JavaScript (luego / atrapar / finalmente).

Ahora, ejecute la aplicación usando el siguiente comando:

npm start

La aplicación inserta la información del estudiante en la base de datos y luego busca a todos los estudiantes en la base de datos y lo muestra en la consola como se muestra a continuación:

> [email protected] 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 } ]