<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      在Vona ORM中實現(xiàn)多數(shù)據(jù)庫/多數(shù)據(jù)源

      在Vona ORM中實現(xiàn)多數(shù)據(jù)庫/多數(shù)據(jù)源非常直觀、簡便。下面以 Model User/Order 為例,通過查詢用戶的訂單列表,來演示多數(shù)據(jù)庫/多數(shù)據(jù)源的使用方法

      準(zhǔn)備Models

      先準(zhǔn)備兩個 Models:User/Order

      1. Model Order
      @Model({
        entity: EntityOrder,
      })
      class ModelOrder{}
      
      • 需要指定ModelOrder關(guān)聯(lián)的Entity,限于篇幅,EntityOrder代碼從略
      1. Model User
      @Model({
        entity: EntityUser,
        relations: {
          orders: $relation.hasMany(() => ModelOrder, 'userId'),
        },
      })
      class ModelUser {}
      
      • 在ModelUser中定義1:n關(guān)系: orders

      查詢數(shù)據(jù)

      然后查詢用戶的訂單列表

      class ServiceOrder {
        async selectUserOrders() {
          const userId = 1;
          const userAndOrders = await this.scope.model.user.get(
            {
              id: userId,
            },
            {
              include: {
                orders: true,
              },
            },
          );
        }
      }  
      

      到目前為止,使用系統(tǒng)默認(rèn)數(shù)據(jù)源查詢到了userId=1的用戶信息,和該用戶的所有訂單列表

      創(chuàng)建多數(shù)據(jù)源

      接下來,創(chuàng)建兩個數(shù)據(jù)源:user-pgorder-mysql

      1. 添加數(shù)據(jù)源的類型定義

      • 在 VSCode 中,通過右鍵菜單Vona Init/Types在模塊中創(chuàng)建類型文件

      • 然后在類型文件中添加類型定義

      {module path}/src/types/index.ts

      declare module 'vona-module-a-orm' {
        export interface IDatabaseClientRecord {
          'user-pg': never;
          'order-mysql': never;
        }
      }
      
      • IDatabaseClientRecord是模塊vona-module-a-orm提供的接口類型。在這里通過接口合并的機(jī)制來添加新的數(shù)據(jù)源類型

      2. 數(shù)據(jù)源配置

      在項目的App config文件中定義數(shù)據(jù)源的配置信息。由于前面已經(jīng)添加了數(shù)據(jù)源類型,在App config文件中就可以享受完整的類型提示

      src/backend/config/config/config.ts

      // database
      config.database = {
        clients: {
          'user-pg': {
            client: 'pg',
            connection: {
              host: '127.0.0.1',
              port: 5432,
              user: 'postgres',
              password: '',
              database: 'user-xxx',
            },
          },
          'order-mysql': {
            client: 'mysql2',
            connection: {
              host: '127.0.0.1',
              port: 3306,
              user: 'root',
              password: '',
              database: 'order-xxx',
            },
          },
        },
      };
      
      • user-pg: 使用數(shù)據(jù)庫方言:pg
      • order-mysql: 使用數(shù)據(jù)庫方言:mysql2

      使用數(shù)據(jù)源:動態(tài)方式

      可以在代碼中動態(tài)使用數(shù)據(jù)源:

      class ServiceOrder {
        async selectUserOrders() {
          const userId = 1;
      +   const modelUser = this.scope.model.user.newInstance('user-pg');
          const userAndOrders = await modelUser.get(
            {
              id: userId,
            },
            {
              include: {
                orders: true,
              },
            },
          );
        }
      }  
      
      • newInstance: 傳入要使用的數(shù)據(jù)源,返回新的 Model 實例

      到目前為止,使用數(shù)據(jù)源user-pg查詢用戶信息,使用系統(tǒng)默認(rèn)數(shù)據(jù)源查詢訂單列表

      使用數(shù)據(jù)源:Relation動態(tài)選項

      可以在 relation 選項中動態(tài)指定數(shù)據(jù)源:

      class ServiceOrder {
        async selectUserOrders() {
          const userId = 1;
          const modelUser = this.scope.model.user.newInstance('user-pg');
          const userAndOrders = await modelUser.get(
            {
              id: userId,
            },
            {
              include: {
                orders: {
      +           meta: {
      +             client: 'order-mysql',
      +           },
                },
              },
            },
          );
        }
      }  
      
      • meta.client: 指定 relation orders要使用的數(shù)據(jù)源

      到目前為止,使用數(shù)據(jù)源user-pg查詢用戶信息,使用數(shù)據(jù)源order-mysql查詢訂單列表

      使用數(shù)據(jù)源:Model配置

      也可以直接在 Model 中配置數(shù)據(jù)源,從而簡化查詢代碼

      1. Model Order
      @Model({
        entity: EntityOrder,
      + client: 'order-mysql',
      })
      class ModelOrder{}
      
      • 在VonaJS框架中,可以非常方便的為@Model裝飾器指定參數(shù)
      1. Model User
      @Model({
        entity: EntityUser,
      + client: 'user-pg',
        relations: {
          orders: $relation.hasMany(() => ModelOrder, 'userId'),
        },
      })
      class ModelUser {}
      
      1. 查詢數(shù)據(jù)

      現(xiàn)在,又可以使用常規(guī)的方式查詢用戶的訂單列表

      class ServiceOrder {
        async selectUserOrders() {
          const userId = 1;
          const userAndOrders = await this.scope.model.user.get(
            {
              id: userId,
            },
            {
              include: {
                orders: true,
              },
            },
          );
        }
      }  
      

      使用數(shù)據(jù)源:App Config配置

      也可以在 App config 中配置 Model options:

      src/backend/config/config/config.ts

      // onions
      config.onions = {
        model: {
          'test-vona:user': {
            client: 'user-pg',
          },
          'test-vona:order': {
            client: 'order-mysql',
          },
        },
      };
      
      • 在VonaJS框架中,可以在App Config文件中提供配置,用于覆蓋對應(yīng)Model的options配置

      于是,也可以使用常規(guī)的方式查詢用戶的訂單列表

      使用數(shù)據(jù)源:Relation靜態(tài)選項

      也可以在定義 Relation 時指定靜態(tài)選項:

      @Model({
        entity: EntityUser,
        client: 'user-pg',
        relations: {
          orders: $relation.hasMany(() => ModelOrder, 'userId', {
      +     meta: {
      +       client: 'order-mysql',
      +     },
          }),
        },
      })
      class ModelUser {}
      

      同樣,也可以使用常規(guī)的方式查詢用戶的訂單列表

      Vona ORM已開源:github.com/vonajs/vona

      posted @ 2025-09-24 10:10  濮水大叔  閱讀(114)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 人妻丰满熟妇av无码区| 久久亚洲精品国产精品尤物| 亚洲色欲色欲WWW在线丝| 最新偷拍一区二区三区| 亚洲欧美人成电影在线观看| 久久精品国产最新地址| 国产精品福利自产拍久久 | 欧美极品色午夜在线视频 | av午夜福利一片免费看久久| 日韩中文字幕精品人妻| 成人网站网址导航| 久久婷婷五月综合色欧美| 好男人社区在线www| 亚洲一二区制服无码中字| 绥棱县| 精品国产AV无码一区二区三区| 成人国产精品中文字幕| 国产毛a片啊久久久久久保和丸| 亚洲第一狼人成人综合网| 久久99精品久久久久久9| 伊人久久大香线蕉综合网站| 国产欧美综合在线观看第十页| 国产一区二区三区在线观看免费| 撕开奶罩揉吮奶头高潮AV| 日韩精品国产二区三区| 久久天天躁狠狠躁夜夜不卡| 午夜福利国产精品小视频| 午夜毛片不卡免费观看视频| 欧美性猛交xxxx免费看| 国产熟女激情一区二区三区| 韩国深夜福利视频在线观看| 亚洲中文日韩一区二区三区| 99久久免费精品色老| 视频一区视频二区视频三区 | 日本高清一区免费中文视频| 动漫AV纯肉无码AV电影网| 久久a级片| 少妇激情av一区二区三区| 国产女人在线视频| 少妇人妻精品一区二区| 亚洲精品专区永久免费区|