sql - NestJS + MySQL: როგორ დავუკავშირდეთ რამდენიმე მონაცემთა ბაზას გლობალური სთრუქტურების (entities) დაყენების გარეშე


NestJS-ის დოკუმენტაცია მონაცემთა ბაზების შესახებ განმარტავს, როგორ დაკავშირება MySQL-ს TypeORM-ის გამოყენებით და Entity-ების განსაზღვრით.

ჩემ შემთხვევაში, მე უნდა გავაერთიანო MySQL სერვერთან, რომელსაც აქვს ერთი-ზე მეტი მონაცემთა ბაზა და მე უნდა შევასრულო SQL მოთხოვნები პირდაპირ (Entity ფენის გამოყენების გარეშე) და დავბრუნდე მათი შედეგები. ზოგჯერ მე ასევე უნდა გავაკეთო მონაცემთა ბაზებს შორის მოთხოვნები.

როგორ გავაკეთო ეს NestJS-ის გამოყენებით?

პასუხი #1

თქვენ შეგიძლიათ იმპორტოთ რამდენიმე მონაცემთა ბაზა, მიეცით კავშირებს სხვადასხვა სახელები. თქვენ შეგიძლიათ პირდაპირ გადმოიცეთ მონაცემთა ბაზის კონფიგურაცია ცალკეულ TypeOrmModule.forRoot({...}) იმპორტებში ან გამოიყენოთ ormconfig.json კონფიგურაციის ფაილი. (თუმცა, ormconfig.json ფაილი შეიძლება მაინც ვერ იმუშაოს რამდენიმე მონაცემთა ბაზასთან, იხილეთ ეს თემა.)

TypeOrmModule.forRoot({
  ...defaultOptions,
  name: 'personsConnection',
  ^^^^^^^^^^^^^^^^^^^^^^^^^^
  host:  'person_db_host',
  entities: [Person],
}),
TypeOrmModule.forRoot({
  ...defaultOptions,
  name: 'albumsConnection',
  ^^^^^^^^^^^^^^^^^^^^^^^^^
  host:  'album_db_host',
  // You can also leave the entities empty
  entities: [],
})

როგორც კამილმა კომენტარებში განაცხადა, თქვენ შეგიძლიათ TypeORM-ის connection ობიექტის ინექცია @InjectConnection('albumsConnection'): Connection -ის გამოყენებით და შემდეგ გამოიყენოთ QueryBuilder ან მეთოდი query ნაგვის SQL-ის შესასრულებლად.

const rawData = await connection.query(`SELECT * FROM USERS`);