как определить местоположение в сущности с помощью mongodb - PullRequest
0 голосов
/ 30 мая 2020

Я использую nest js в моем sample application. Я определяю сущность своего приложения. Entity означает document. Но я ударил в одно место, чтобы определить location.

с помощью mon goose Я определяю схему своего документа следующим образом: см. Ссылку

https://raw.githubusercontent.com/webmakaka/Node.js-API-Masterclass-With-Express-MongoDB/master/api/models/Bootcamp.js

location: {
      // GeoJSON Point
      type: {
        type: String,
        enum: ['Point']
      },
      coordinates: {
        type: [Number],
        index: '2dsphere'
      },
      formattedAddress: String,
      street: String,
      city: String,
      state: String,
      zipcode: String,
      country: String
    },
    careers: {
      // Array of strings
      type: [String],
      required: true,
      enum: [
        'Web Development',
        'Mobile Development',
        'UI/UX',
        'Data Science',
        'Business',
        'Other'
      ]
    },

то же самое, что я хочу сделать, используя typeorm, используя mongoDB без mongoos. Не могли бы вы помочь мне, как я это сделаю.

вот мой класс сущности

import { BaseEntity, Entity, PrimaryGeneratedColumn, Column, ManyToOne, ObjectID, ObjectIdColumn } from 'typeorm';
import { IsNotEmpty, MaxLength } from 'class-validator';

@Entity('bootcamp')
export class BootcampEntity extends BaseEntity {
  @ObjectIdColumn() id: ObjectID;

  @Column({type:'text',unique:true,length:50,nullable: false})
  name:string;

  @Column({type:'text'})
  slug: string;

  @Column({type:'text',length:500,nullable: false})
  description: string;

  @Column({type:'text'})
  website: string;

  @Column({type:'text',length:20})
  phone: string;

  @Column({type:'text',})
  email: string;


  @Column({type:'text',nullable: false})
  address: string;

  @Column({type:'text',array: true })
  careers: string[];

  @Column({type:'int'})
  averageRating:number

  @Column({type:'int'})
  averageCost:number
  //
  @Column({type:'string',default:'no-photo.jpg'})
  photo: string;
  //
  @Column({type:'boolean',default:false})
  housing: boolean;

  @Column({type:'boolean',default:false})
  jobAssistance: boolean;

  @Column({type:'boolean',default:false})
  jobGuarantee: boolean;

  @Column({type:'boolean',default:false})
  acceptGi: boolean;

  @Column({type:'date',default:Date.now()})
  createdAt: Date;

}

Я использую этот фреймворк

https://docs.nestjs.com/

typeorm link https://typeorm.io/# / entity

есть схема

https://raw.githubusercontent.com/webmakaka/Node.js-API-Masterclass-With-Express-MongoDB/master/api/models/Bootcamp.js

Я хочу создать такую ​​же схему, используя typeorm. Я ударил только определение атрибута местоположения?

как определить? не могли бы вы рассказать мне, как я определю location в своем классе сущности?

1 Ответ

0 голосов
/ 30 мая 2020

Я думаю, что местоположение будет иметь структуру, аналогичную приведенному ниже коду.

источник 1 источник 2

enum GeoJSONPoint {
  Point = "Point"
}

enum Careers {
  WebDevelopment = 'Web Development',
  MobileDevelopment = 'Mobile Development',
  UIUX = 'UI/UX',
  DataScience = 'Data Science',
  Business = 'Business',
  Other = 'Other'
}

@Entity('location')
export class LocationEntity extends BaseEntity {

  @Column({
    type: "enum",
    enum: GeoJSONPoint
  })
  type: GeoJSONPoint;

  @Column({type:'int'})
  coordinates: number;

  @Column({type:'text'})
  formattedAddress: string;

  @Column({type:'text'})
  street: string;

  @Column({type:'text'})
  city: string;

  @Column({type:'text'})
  state: string;

  @Column({type:'text'})
  zipcode: string;

  @Column({type:'text'})
  country: string;

  @Column({type:'simple-array'})
  careers: Careers[];
}
...