sql - NestJS + MySQL: چگونه بدون تنظیم موجودیتها به چندین پایگاه داده متصل شویم
مستندات NestJS توضیح میدهد که چگونه با استفاده از TypeORM به MySQL متصل شوید و موجودیتها را تعریف کنید.
در مورد من، من باید به یک سرور MySQL متصل شوم که بیش از یک پایگاه داده دارد و لازم است کوئریهای SQL را مستقیماً اجرا کنم (بدون استفاده از لایه Entity) و نتایج آنها را دریافت کنم. گاهی اوقات همچنین نیاز دارم کوئریهای بین پایگاه دادهای را اجرا کنم.
چطور میتوان این کار را با استفاده از NestJS انجام داد؟
پاسخ شماره ۱
شما میتوانید چندین پایگاه داده را با دادن نامهای مختلف به اتصالات وارد کنید. شما میتوانید مستقیماً پیکربندی پایگاه داده را در واردات جداگانه 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: [],
})
همانطور که کامیل در نظرات اشاره کرده است، شما میتوانید شیء connection از TypeORM را با @InjectConnection('albumsConnection'): Connection تزریق کنید و سپس از QueryBuilder یا متد query برای اجرای SQL خام استفاده کنید.
const rawData = await connection.query(`SELECT * FROM USERS`);
