99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

MikroORM Type-Safe Relations 實戰(zhàn):用 `Ref`、`LazyRef` 與 `Loaded` 在編譯期杜絕“幽靈關(guān)聯(lián)“

MikroORM Type-Safe Relations 實戰(zhàn):用 `Ref`、`LazyRef` 與 `Loaded` 在編譯期杜絕“幽靈關(guān)聯(lián)“ 后端【免費下載鏈接】mikro-ormTypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, MS SQL Server, PostgreSQL and SQLite/libSQL databases.項目地址https://gitcode.com/gh_mirrors/mi/mikro-orm點擊查看免費下載本篇指南圍繞 MikroORM 7.1 版本文檔docs/versioned_docs/version-7.1/type-safe-relations.md展開系統(tǒng)講解如何把實體關(guān)聯(lián)從運行時才知道是否已加載的盲區(qū)提升為編譯期即可感知的類型安全體驗。讀完你將掌握四種互相配合的工具——Reference包裝器、LazyRef類型級引用、Loaded類型與$同步訪問器以及unref()/Loadable/ScalarReference等配套 API能夠?qū)懗鑫醇虞d即編譯報錯、已加載即同步訪問的實體層代碼。為什么關(guān)系需要類型安全在 MikroORM 中實體關(guān)系被映射為實體引用entity reference——即至少攜帶主鍵的實體實例該引用存放在 Identity Map 中因此同一份數(shù)據(jù)反復(fù)查詢得到的是同一個對象引用ManyToOne(() Author) author!: Author;問題在于TypeScript 無法靜態(tài)判斷該關(guān)系是否已真正從數(shù)據(jù)庫加載。author屬性的類型永遠是Author即使它只是一個只有主鍵、其余屬性未初始化的引用stubconst book await em.findOne(Book, 1); console.log(book.author instanceof Author); // true —— 是 Author 實例 console.log(wrap(book.author).isInitialized()); // false —— 但并未加載 console.log(book.author.name); // undefined —— Author 尚未加載這種看起來是實體、摸起來卻是空殼的關(guān)聯(lián)是運行時錯誤的溫床。為此 MikroORM 提供了一整套類型安全工具Reference包裝器把關(guān)系包裝成RefT顯式區(qū)分已加載/未加載狀態(tài)Loaded類型在類型層面追蹤哪些關(guān)系已被populate$訪問器對已加載關(guān)系提供類型安全的同步訪問。其類型核心定義位于 typings.ts運行時包裝器實現(xiàn)在 Reference.ts。Reference包裝器Reference包裝一個實體引用并提供一組安全的訪問方法方法說明load()加載實體返回PromiseTload(prop)加載實體并返回指定屬性loadOrFail()加載實體找不到時拋出錯誤行為同em.findOneOrFail()unwrap()返回底層實體不安全可能未初始化isInitialized()返回實體是否已加載getEntity()返回實體未初始化則拋出錯誤getProperty(prop)返回屬性未初始化則拋出錯誤$/get()同步訪問僅在LoadedReference上可用從源碼看Reference類Reference.ts在構(gòu)造時會把實體的主鍵屬性通過Object.defineProperty復(fù)制到包裝器上這就是ref.id無需unwrap()即可直接讀取的原因同時$與get是定義在Reference.prototype上的取值器Reference.ts分別直接返回底層實體。定義引用屬性使用RefT類型加上ref: true選項來聲明引用屬性。MikroORM 7 支持defineEntity、reflect-metadata、ts-morph 等多種實體定義方式本文按官方文檔的四種 Tab 逐一給出方式一defineEntity class 組合import { defineEntity, p } from mikro-orm/core; const BookSchema defineEntity({ name: Book, properties: { id: p.integer().primary(), author: p.manyToOne(() Author).ref(), }, }); export class Book extends BookSchema.class {} BookSchema.setClass(Book);方式二純defineEntity無 classimport { defineEntity, p } from mikro-orm/core; export const Book defineEntity({ name: Book, properties: { id: p.integer().primary(), author: () p.manyToOne(Author).ref(), }, });方式三reflect-metadata 裝飾器import { Entity, Ref, ManyToOne, PrimaryKey, ref } from mikro-orm/core; Entity() export class Book { PrimaryKey() id!: number; ManyToOne(() Author, { ref: true }) author: RefAuthor; constructor(author: Author) { this.author ref(author); } }方式四ts-morph無參數(shù)推斷的裝飾器寫法import { Entity, Ref, ManyToOne, PrimaryKey, ref } from mikro-orm/core; Entity() export class Book { PrimaryKey() id!: number; ManyToOne() author: RefAuthor; constructor(author: Author) { this.author ref(author); } }使用引用未加載時Ref只暴露主鍵任何對非主鍵屬性的訪問都會得到編譯錯誤const book await em.findOne(Book, 1); // 引用尚未加載 book.author; // RefAuthor book.author.isInitialized(); // false book.author.id; // OK —— 主鍵永遠可用 book.author.name; // TS 錯誤 —— RefAuthor 上沒有 name // 加載引用 const author await book.author.load(); author.name; // OK —— 現(xiàn)在已加載 // 或者只加載并取出某個屬性 const name await book.author.load(name);當(dāng)關(guān)系被 populate 后你得到的是LoadedReference可以通過$同步訪問const book await em.findOne(Book, 1, { populate: [author] }); book.author; // LoadedReferenceAuthor book.author.$.name; // OK —— 類型安全的同步訪問 book.author.get().name; // 同上另一種等價寫法嚴格校驗getEntity/getPropertyunwrap()是裸奔接口而getEntity()/getProperty()會在未初始化時拋錯適合在需要強校驗的場景使用const book await em.findOne(Book, 1); // 未初始化時拋錯 book.author.getEntity(); // Error: ReferenceAuthor not initialized book.author.getProperty(name); // Error: ReferenceAuthor not initialized // 先加載再同步訪問 await book.author.load(); book.author.getEntity().name; // OK book.author.getProperty(name); // OK對應(yīng)錯誤信息由getEntity()在未初始化時拋出Reference.ts。與wrap(entity).init()總是從數(shù)據(jù)庫刷新不同Reference.load()只有當(dāng)實體不在 Identity Map 中時才會發(fā)起查詢——已加載則直接復(fù)用內(nèi)存中的對象見 Reference.ts 中isInitialized()與refresh選項的分支邏輯。LazyRefT—— 類型層面的引用如果你想要編譯期的 populate 狀態(tài)安全但又不想承擔(dān)Reference帶來的.$/.get()間接訪問可以使用LazyRefT。它是純類型標(biāo)記運行時屬性直接持有實體實例與不帶ref: true的普通關(guān)系完全一致但 TypeScript 在Loaded收窄之前只允許你訪問主鍵。ManyToOne(() Author) author!: LazyRefAuthor;用defineEntity時對應(yīng).lazyRef()const BookSchema defineEntity({ name: Book, properties: { author: () p.manyToOne(AuthorSchema).lazyRef(), }, });從源碼看LazyRef是一個帶唯一符號品牌brand的交叉類型{ [K in PrimaryPropertyT keyof T]: T[K] } LazyRef.BrandTtypings.ts它把可訪問屬性收窄為主鍵其余屬性在編譯期被鎖住。語義對比LazyRefTvsRefTLazyRefTRefT運行時值實體實例stub 或已水合Reference包裝器instanceof T運行時truefalse訪問未加載的主鍵ref.id?ref.id?訪問未加載的非主鍵編譯錯誤 ?編譯錯誤 ?訪問已加載屬性loaded.author.name無.$loaded.author.$.nameload()/loadOrFail()方法? —— 需在目標(biāo)實體上用Loadablemixin? 內(nèi)置關(guān)于instanceof的注意點上表中的instanceof T指的是運行時 JS 檢查——book.author instanceof Author返回true。但 TypeScript 的instanceof控制流收窄不會剝離LazyRefT的品牌標(biāo)記所以if (book.author instanceof Author) { /* 這里 book.author.name 依然是編譯錯誤 */ }并不能讓你獲得完整實體訪問。請使用unref()或Loaded收窄來獲得編譯期訪問。用法示例const book await em.findOneOrFail(Book, 1); book.author.id; // ok —— 主鍵總是可訪問 book.author.name; // 編譯錯誤 —— 未加載 const loaded await em.findOneOrFail(Book, 1, { populate: [author] }); loaded.author.name; // ok —— LoadedBook, author 把 LazyRefAuthor 收窄為 Author測試 lazy-ref.test.ts 對上述語義做了逐一驗證運行時值是實體實例而非包裝器第 85-90 行、未 populate 時主鍵可訪問而name是編譯錯誤第 126-133 行、populate 后Loaded收窄恢復(fù)完整訪問第 135-140 行。適用范圍LazyRefT只用于 to-one 關(guān)系ManyToOne、OneToOne。集合關(guān)系本身已有CollectionT的間接層無需此標(biāo)記。注意安全邊界該安全純粹是編譯期的。JS 代碼、as any強轉(zhuǎn)、或繞過Loaded的代碼路徑在運行時可以自由讀取任何屬性——對未 populate 的引用只有主鍵的 stub這些讀取會得到undefined。如果關(guān)系已被 populate底層實體已完全水合讀取行為正常該警告只針對 stub 場景與普通非Ref關(guān)系是同一個坑。類型性能LazyRefT在Loaded/AutoPath收窄路徑上只增加一個條件分支成本與RefT相當(dāng)已加載收窄時甚至略便宜因為不會產(chǎn)生LoadedReference交叉類型。測量數(shù)據(jù)見 tests/bench/types/lazy-ref.tsLoaded LazyRef - single to-one為 954 次實例化對應(yīng)Ref基線為 971 次深層鏈5 級AutoPath LazyRef為 1165 次實例化。unref()—— 無法穿透Loaded時的逃生通道當(dāng)代碼周圍都是裸Book類型而非LoadedBook, author而你確信關(guān)系已被 populate 時用unref()把LazyRefT或RefT收窄回Timport { unref } from mikro-orm/core; function logAuthor(book: Book) { // book.author 是 LazyRefAuthor —— 直接寫 .name 是編譯錯誤 console.log(unref(book.author).name); }unref()是ref()的逆操作作用于以下幾類值實現(xiàn)見 Reference.tsRefT/ReferenceT實體—— 調(diào)用.unwrap()返回TLazyRefT—— 運行時身份轉(zhuǎn)換底層值本來就是T返回T普通T—— 透傳返回TScalarReferenceV/ScalarRefV—— 調(diào)用.unwrap()返回V | undefined標(biāo)量可能未綁定null/undefined—— 透傳。和普通as強轉(zhuǎn)一樣unref()對實體關(guān)系只做編譯期收窄——若實體是從未 populate 的 stub非主鍵屬性在運行時仍是undefined。在你確信關(guān)系已加載時使用它能穿透Loaded時優(yōu)先選擇把它寫進函數(shù)簽名。測試 lazy-ref.test.ts 覆蓋了unref()對LazyRef、Ref、普通實體、標(biāo)量引用及null/undefined的全部行為。Loadablemixin —— 在實體上獲得load()/loadOrFail()如果你用的是普通關(guān)系或LazyRefT又想要Reference包裝器提供的load()/loadOrFail()便利可以在實體類上啟用Loadablemixin。它把這兩個方法掛到實體原型上讓你能直接在關(guān)系目標(biāo)上調(diào)用import { BaseEntity, Loadable, LoadableBaseEntity } from mikro-orm/core; // 便捷方式BaseEntity 已預(yù)組合該 mixin class User extends LoadableBaseEntity { // ... } // 獨立方式不繼承任何基類 class Product extends Loadable() { // ... } // 或與自己的基類組合 class Article extends Loadable(MyBase) { // ... } const user orm.em.getReference(User, 1); const loaded await user.load(); // PromiseUser | null const loadedOrThrows await user.loadOrFail(); // PromiseUser該 mixin 的實現(xiàn)位于 BaseEntity.tsload()內(nèi)部就是Reference.create(this).load(...)因此同樣遵循已加載則不重復(fù)查詢的 Identity Map 語義LoadableBaseEntity是Loadable(BaseEntity)的預(yù)組合別名BaseEntity.ts。按設(shè)計選擇啟用BaseEntity本身不會獲得這兩個方法因此已擁有l(wèi)oad/loadOrFail屬性的實體不會受影響。反過來若對已定義load的基類應(yīng)用 mixin會觸發(fā)編譯錯誤以防止靜默覆蓋EnsureNoLoadConflict檢查BaseEntity.ts。Loaded類型LoadedEntity, Hints在編譯期追蹤哪些關(guān)系已被 populate。所有em.find*方法都返回該類型// 類型LoadedUser, never[] const users await em.find(User, {}); // 類型LoadedUser, identity | friends[] const usersWithRelations await em.find(User, {}, { populate: [identity, friends], });其內(nèi)部構(gòu)造typings.ts會遍歷實體屬性把 populate 提示中命中的關(guān)系屬性替換為LoadedProp對LazyRef/Ref/Collection分別收窄并附加__loadedType、__loadHint標(biāo)記符號__loadHint利用逆變contravariance保證LoadedA, b不可賦值給LoadedA, b.c從而讓嵌套提示精確匹配。以下面的User實體為例含identity引用關(guān)系與friends集合關(guān)系defineEntity classimport { defineEntity, p } from mikro-orm/core; const UserSchema defineEntity({ name: User, properties: { id: p.integer().primary(), identity: p.manyToOne(() Identity).ref(), friends: p.manyToMany(() User), }, }); export class User extends UserSchema.class {} UserSchema.setClass(User);純defineEntityimport { defineEntity, p } from mikro-orm/core; export const User defineEntity({ name: User, properties: { id: p.integer().primary(), identity: () p.manyToOne(Identity).ref(), friends: () p.manyToMany(User), }, });reflect-metadata 裝飾器import { Entity, PrimaryKey, ManyToOne, ManyToMany, Collection, Ref, ref } from mikro-orm/core; Entity() export class User { PrimaryKey() id!: number; ManyToOne(() Identity, { ref: true }) identity: RefIdentity; ManyToMany(() User) friends new CollectionUser(this); constructor(identity: Identity) { this.identity ref(identity); } }ts-morph 裝飾器import { Entity, PrimaryKey, ManyToOne, ManyToMany, Collection, Ref, ref } from mikro-orm/core; Entity() export class User { PrimaryKey() id!: number; ManyToOne() identity: RefIdentity; ManyToMany(() User) friends new CollectionUser(this); constructor(identity: Identity) { this.identity ref(identity); } }用$做類型安全訪問當(dāng)關(guān)系出現(xiàn)在Loaded提示中時即可通過$同步訪問// 類型LoadedUser, identity const user await em.findOneOrFail(User, 1, { populate: [identity] }); // 類型安全的同步訪問 console.log(user.identity.$.email);沒有 populate 提示時訪問$是編譯錯誤// 類型LoadedUser, never const user await em.findOneOrFail(User, 1); // TS 錯誤Property $ does not exist on type RefIdentity console.log(user.identity.$.email);$與get()的運行時等價性由原型上的取值器保證Reference.ts類型層面則由LoadedReference接口typings.ts聲明$: NonNullableT與get(): NonNullableT。如果你不喜歡$這種魔法符號風(fēng)格可以直接用get()方法二者完全等價。在函數(shù)簽名中要求已加載關(guān)系可以把Loaded寫進函數(shù)參數(shù)讓編譯器替你把關(guān)function sendWelcomeEmail(user: LoadedUser, identity) { // 類型安全 —— identity 保證已加載 const email user.identity.$.email; mailer.send(email, Welcome!); } // 可行 —— identity 已被 populate const user1 await em.findOneOrFail(User, 1, { populate: [identity] }); sendWelcomeEmail(user1); // 編譯錯誤 —— identity 未 populate const user2 await em.findOneOrFail(User, 1); sendWelcomeEmail(user2);集合的$訪問$同樣適用于Collection// 類型LoadedUser, friends const user await em.findOneOrFail(User, 1, { populate: [friends] }); // 對已加載集合做類型安全迭代 for (const friend of user.friends.$) { console.log(friend.email); }集合側(cè)的收窄由LoadedCollection接口提供typings.ts額外支持getItems()便捷方法。注意Loaded純粹是編譯期構(gòu)造。你可以用類型斷言繞過它但那恰恰破壞了類型安全的意義。給RefT屬性賦值向RefT屬性賦值時需要先把實體包裝成引用import { ref } from mikro-orm/core; const book await em.findOne(Book, 1); // 方式一ref() 助手 book.author ref(someAuthor); // 方式二getReference 的 wrapped 選項 book.author em.getReference(Author, 2, { wrapped: true }); // 方式三toReference() book.author wrap(someAuthor).toReference();ref(e)是wrap(e).toReference()的快捷方式二者等價于Reference.create(e)。wrap()的toReference()實現(xiàn)WrappedEntity.ts會緩存并返回一個Reference包裝器ref()的多態(tài)重載Reference.ts則兼容實體實例 / 實體類型主鍵 / 標(biāo)量值三種入?yún)⑿螒B(tài)。無需 EntityManager 地創(chuàng)建引用rel()在實體構(gòu)造函數(shù)內(nèi)部可以用rel()直接按主鍵創(chuàng)建裸引用defineEntity classimport { defineEntity, p, rel } from mikro-orm/core; const BookSchema defineEntity({ name: Book, properties: { id: p.integer().primary(), author: p.manyToOne(() Author).ref(), }, }); // 用法用作者引用創(chuàng)建 book const book em.create(Book, { author: rel(Author, authorId) }); export class Book extends BookSchema.class {} BookSchema.setClass(Book);純defineEntityimport { defineEntity, p, rel } from mikro-orm/core; export const Book defineEntity({ name: Book, properties: { id: p.integer().primary(), author: () p.manyToOne(Author).ref(), }, }); // 用法用作者引用創(chuàng)建 book const book em.create(Book, { author: rel(Author, authorId) });reflect-metadata 裝飾器import { Entity, ManyToOne, PrimaryKey, Ref, rel } from mikro-orm/core; Entity() export class Book { PrimaryKey() id!: number; ManyToOne(() Author, { ref: true }) author!: RefAuthor; constructor(authorId: number) { this.author rel(Author, authorId); } }ts-morph 裝飾器import { Entity, ManyToOne, PrimaryKey, Ref, rel } from mikro-orm/core; Entity() export class Book { PrimaryKey() id!: number; ManyToOne() author!: RefAuthor; constructor(authorId: number) { this.author rel(Author, authorId); } }另一種方式是用wrap()助手提供的toReference()const author new Author(...); book.author wrap(author).toReference();rel()內(nèi)部是Reference.createNakedFromPK(entityType, pk)Reference.ts——注意它創(chuàng)建的是裸實體引用不套Reference包裝因此非常適合在構(gòu)造函數(shù)/em.create這類還沒有 EntityManager 上下文的地方按主鍵占位。主鍵訪問RefT類型天然包含實體的主鍵允許不加載直接讀取const book await em.findOne(Book, 1); console.log(book.author.id); // OK —— 主鍵總是可用MikroORM 按_id、uuid、id的順序探測主鍵屬性自定義主鍵名時使用PrimaryKeyProp符號聲明類型層實現(xiàn)見 typings.ts 的Primary/PrimaryProperty探測邏輯defineEntity classimport { defineEntity, p } from mikro-orm/core; const AuthorSchema defineEntity({ name: Author, properties: { myPrimaryKey: p.integer().primary(), }, }); export class Author extends AuthorSchema.class {} AuthorSchema.setClass(Author); // 使用 defineEntity 時 PrimaryKeyProp 會被自動推斷純defineEntityimport { defineEntity, p, PrimaryKeyProp } from mikro-orm/core; export const Author defineEntity({ name: Author, properties: { myPrimaryKey: p.integer().primary(), }, }); // 使用 defineEntity 時 PrimaryKeyProp 會被自動推斷reflect-metadata 裝飾器import { Entity, PrimaryKey, PrimaryKeyProp } from mikro-orm/core; Entity() export class Author { PrimaryKey() myPrimaryKey!: number; [PrimaryKeyProp]?: myPrimaryKey; }ts-morph 裝飾器import { Entity, PrimaryKey, PrimaryKeyProp } from mikro-orm/core; Entity() export class Author { PrimaryKey() myPrimaryKey!: number; [PrimaryKeyProp]?: myPrimaryKey; }聲明之后自定義主鍵名即可直接訪問// 現(xiàn)在自定義主鍵名也能用了 const book await em.findOne(Book, 1); console.log(book.author.myPrimaryKey);MongoDB 的雙主鍵形態(tài)對 MongoDBidstring與_idObjectId同時可用defineEntity classimport { defineEntity, p } from mikro-orm/core; const BookSchema defineEntity({ name: Book, properties: { _id: p.type(ObjectId).primary(), id: p.string().serializedPrimaryKey(), author: p.manyToOne(() Author).ref(), }, }); export class Book extends BookSchema.class {} BookSchema.setClass(Book);純defineEntityimport { defineEntity, p } from mikro-orm/core; export const Book defineEntity({ name: Book, properties: { _id: p.type(ObjectId).primary(), id: p.string().serializedPrimaryKey(), author: () p.manyToOne(Author).ref(), }, });reflect-metadata 裝飾器import { Entity, PrimaryKey, SerializedPrimaryKey, ManyToOne, Ref } from mikro-orm/core; Entity() export class Book { PrimaryKey() _id!: ObjectId; SerializedPrimaryKey() id!: string; ManyToOne(() Author, { ref: true }) author!: RefAuthor; }ts-morph 裝飾器import { Entity, PrimaryKey, SerializedPrimaryKey, ManyToOne, Ref } from mikro-orm/core; Entity() export class Book { PrimaryKey() _id!: ObjectId; SerializedPrimaryKey() id!: string; ManyToOne() author!: RefAuthor; }const book await em.findOne(Book, 1); console.log(book.author.id); // string console.log(book.author._id); // ObjectId之所以兩種主鍵都能直接讀是因為Reference構(gòu)造時會為實體元數(shù)據(jù)中的每個主鍵以及序列化主鍵serializedPrimaryKey注冊取值器Reference.ts。ScalarReference包裝器惰性加載的標(biāo)量屬性非關(guān)系使用ScalarRefTProperty({ lazy: true, ref: true }) passwordHash!: Refstring; Property({ type: json, lazy: true, ref: true }) metadata!: ScalarRefRecordstring, unknown;const user await em.findOne(User, 1); // 加載惰性標(biāo)量 const hash await user.passwordHash.load(); // 或直接 populate const userWithHash await em.findOne(User, 1, { populate: [passwordHash], }); console.log(userWithHash.passwordHash.$);對string、number這類原始類型RefT會自動解析為ScalarReference對對象類型則需要顯式寫ScalarRefT。這一分支邏輯體現(xiàn)在RefT條件類型定義中typings.tsT extends Scalar ? ScalarReferenceT : EntityRefT。ScalarReference的運行時實現(xiàn)Reference.ts通過bind(entity, property)與宿主實體綁定load()內(nèi)部調(diào)用helper(entity).populate([property])走與關(guān)系 populate 相同的加載管線$/get()取值器直接返回標(biāo)量值Reference.ts??煽諛?biāo)量當(dāng)標(biāo)量引用可空時包裝器本身恒為真值需要在加載后檢查值Property({ type: json, nullable: true, lazy: true, ref: true }) config!: ScalarRefConfig | null;const entity await em.findOne(Entity, 1, { populate: [config] }); // 包裝器存在但值可能是 null if (entity.config.$) { // 這里可以安全使用 console.log(entity.config.$.setting); }小結(jié)按場景選擇正確的工具需求推薦方案顯式區(qū)分已加載/未加載接受.$間接訪問RefTref: trueReference包裝器運行時零包裝、只想要編譯期防護LazyRefTLoaded收窄在裸實體類型上直接load()/loadOrFail()Loadablemixin /LoadableBaseEntity無法穿透Loaded時的逃生通道unref()惰性標(biāo)量屬性非關(guān)系ScalarRefT對象類型需顯式聲明在構(gòu)造函數(shù)/em.create中按主鍵占位rel()/Reference.createNakedFromPK核心取舍一句話RefT用運行時多一層包裝換運行時與編譯期雙重安全LazyRefT用運行時零成本換僅編譯期安全。兩者都依賴Loaded在類型層面追蹤 populate 狀態(tài)配合$同步訪問器可以把空引用訪問undefined這類運行時錯誤前移到編譯期。相關(guān)源碼與測試可繼續(xù)深入 packages/core/src/entity/Reference.ts、packages/core/src/typings.ts、tests/features/lazy-ref.test.ts 與 tests/bench/types/lazy-ref.ts。贊分享后端【免費下載鏈接】mikro-ormTypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, MS SQL Server, PostgreSQL and SQLite/libSQL databases.項目地址https://gitcode.com/gh_mirrors/mi/mikro-orm點擊查看免費下載相關(guān)推薦MikroORM 類型安全關(guān)系Type-Safe Relations實戰(zhàn)指南Reference、Loaded 與 LazyRef 完全解析MikroORM 類型安全關(guān)系Type Safe Relations實戰(zhàn)指南Reference、Loaded 與 LazyRef 完全解析 導(dǎo)讀 本文是后端MikroORM 7 類型安全關(guān)系Type-Safe Relations完全指南Reference、Loaded 與 $ 訪問器MikroORM 7 類型安全關(guān)系Type Safe Relations完全指南Reference、Loaded 與 $ 訪問器 MikroORM 7 的后端mikro-orm 類型安全關(guān)聯(lián)Type-Safe Relations從 Reference 包裝器到 Loaded 類型的實戰(zhàn)指南mikro orm 類型安全關(guān)聯(lián)Type Safe Relations從 Reference 包裝器到 Loaded 類型的實戰(zhàn)指南 本文以 mikro后端上一篇baoyu-slide-deck 幻燈片圖像生成提示詞規(guī)范基于 base-prompt 理解 The Architect 角色與 16:9 渲染管線下一篇AionUi Preview 模塊深度解析多 Tab 文件預(yù)覽編輯系統(tǒng)與 Agent 流式更新機制創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天色色天天| 人人摸人人干人人做| 九九人人操| 亚洲女婷婷五月基地综合久久久| 亚洲成人一区| 9操在线| 情欲禁地| 色99在线| 天天日夜夜爽| 五月亭亭六月天| 婷婷丁香综合| www.五月天。com| 任你爽免费视频| 97人人妻人人艹| 五月丁香婷婷啪啪| 国产乱子轮XXX农村| 国产精品视频免费看| 国产一级婬片毛片| 天天橾日日橾夜夜橾17| 思思综合热| 看黄的网站18禁| 99久久精品亚洲综合| 欧美人与性动交CCOO| 亚洲人妻电影| 久久3p| 五月开行婷婷色五月| 六月激情婷婷色| a九九热www| 国产精品成av人在线视午夜片| 婷婷五月色| 久操激情| 婷婷午夜| 五月天激情网图片| www.玖玖九| 国产AV一区二区三区最新精品| 婷婷性爱影院| 99热激情| 亚洲V国产V欧美V久久久久久| 99热这里有精品| 五月婷婷九九热| 夜夜干天天操| 五月丁香好婷婷A片网| 天天干天天操天天拍| 丁香五月婷在线观看| 激情5月婷婷狠狠干| 超碰狠狠操| 亚洲 视频 导航 一区| 婷婷色五月天色色| 在线成人网站| 婷婷丁香一月| 欧美va在线观看| 狠狠高潮精品亚洲1| 狠狠色综合网站久久久久| 激情五月婷婷在线| 五月天精品| 丁香六月综合| 色色色热| 久热精彩视频98| 99操不停| 婷婷的99视频网站| 欧美综合激情五月| 啪色综合| 亚洲欧洲中文日韩久久AV乱码| 人与禽A片啪啪| 久久综合五月天激情小说网站 | 婷婷丁香人妻天天久久| 亚洲无码11| 99久久综合网| 不卡在线中文字幕无| 成人丁香婷婷| 91ncom.色| jiujiu热在线视频| 五月天综合婷婷| 人妻久久久久久久| www.色五月| 玖玖99婷婷| 性爱五月婷| 开心五月婷婷婷美女| 人人爽天天莫| 婷婷激情小说| 精国产品一区二区三区A片| 亚洲妇女熟BBW| 国产黄色大片| 久久五月天综合视频网站| 婷婷五月天亚洲激情戏精品| 91九色国产| 日本三级日本三级99| 日木WWW视频| 丁香五夜激情四射夜夜夜| 婷婷五月综合啪| 色婷婷基地在线| 天天干天天干天天| 欧美日韩国产伦精品日韩人妻一| 五月天欧美 另类小说| 天天色天天色天天色天天色天天色| 天天操婷婷| 人人干人人看| Www99热| 激情五月丁香综合蜜桃| 猫咪伊人久久| 99色视| 婷婷丁香成人在线视频| 99精品热| 婷婷五月大香蕉| 狠狠狠狠狠狠草| 色婷狠狠| 亚洲啪啪精品| 激情五月婷婷色| 婷婷五月成人| 成人 视频免费观看网站| 日日天天操| 九九热在线视频| 91碰碰碰| 婷婷五月亚洲激情| 久色网址| 国产成人在线不卡AV| 人妻精品久久久久久久| 中文字幕一色哟哟哟哟| 婷婷五月免费观看| 九九热在线观看视频| 婷婷五月亚洲激情| 99国产精品白浆在线观看免费| 97干免费视频| 97超碰在线观看免费| 香蕉久久国产AV一区二区| 99热精品中文字幕| 亚洲视频久久| 俺去也五月| 欧美日韩成人综合9| 色五月婷婷天天干| 大香蕉啪啪网| 色黑鬼导航| 天堂久久婷婷| 久99久视频| 九月激情综合| 五月婷婷五月天| 天堂综合久久| 色婷婷丁香| 日本在线99| 337久久| 五月丁香婷婷激情| 超碰天堂网| 五月色综合| 色五月婷婷综合在线| www,99热| www.久久爱.com| 人妻久久久久久久 | 99热综合| 国产精品久久久久久喷浆| 欧美狠狠一在草| 亚洲av综合网| 久久婷出差欧美色两性综合网| 丁香六月婷婷| 婷婷五月天成人网站| 日本久久爱| 精品乱码久久久久| 26UUU欧美激情一区二区| 天天干天天干天天干| 婷婷精品视频| 成人无码髙潮喷水A片| 国产片天天爽夜夜爽| 激情婷婷五月| 成人精品99| 九九Y精品热播| 婷婷五月天偷拍| 日本操B视频在线观看| 丁香婷婷成人在线播放| 色五月婷婷综合在线| 大香蕉啪啪| 婷婷久热| 午夜微拍福利| 人人97碰| 丁香性爱在线视频| 狠狠色五月| 久热成人| 欧美激情-区二区三区| 97色色色色色| 97色色色色色色色| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 天天做 天天爱| 日韩一级网站| 亚洲精品V天堂中文字幕| 5月婷婷激情6月| 9色在线视频精品观看| 一丁香五月天月AV| 丁香婷婷综合五月天| www.色五月| 六月丁香色婷婷| 另类激情五月| 色五月婷婷丁香凹凸| 伊人玖玖网| 99精品国产在热久久| 亚洲V国产V欧美V久久久久久| 婷婷五月激情视频| 另类色网| 99久扒热| 婷香狠狠爱五月| 久久激情五月| 美女丁香五婷婷| 大香蕉五月丁香| 免费视频在线观看的网站| 五月天天天天天天天天天天天婷婷婷| 亚洲天堂AAA| 色情开心五月| 99丁香五月| 激情综合色网| 婷婷五月丁香超碰| 久久久久久久久久人妻| 五月天婷婷激情小说| 欧美久久久久久久久中文字幕| www.91色| 碰碰91| 久久久久人妻中文| 天天日夜夜夜操操操操| 婷婷五月成人有| 激情五月天第四色| 天天日P天天射P| 97色碰| 秋霞AV淫| 99无码| 5月婷婷性视频| 久久激情网| 亚洲乱啪| 激情骚五月| wwwav大香蕉| 五月婷婷色影院| 五月六月激情| 五月天黄色激情小说| 狠狠干五月天婷婷网| 成人色图情色成人网 www.5b5b5bcom 五月天 | 丁香六月综合激情| www.久久| 欧美交换配乱吟粗大25P| 欧美婷婷丁香五月社区| 色射影院| 超碰AV在线| 丁香六月色婷婷| 成人丁香| 国产9色在线/日韩| 六月婷婷av| 天天爱天天吃狠天天透| 97色啪| 五月婷婷色五月| 丁香 婷婷 亚洲 熟女| 狠狠色丁香99| 99久久精品网| 国产精品成人av在线观看春天| α久久| 激情五月综合色婷婷| 婷五月天天| 五月天色色网站| 婷婷少妇激情| 丁香五月激情天AV无码| caopeng97日韩| 99热香港| 99综合一区| 五月花亭亭| 日韩十国产极品久久| 五月天婷网| 婷婷5月九九| 婷婷五月天激情AV影院| 五月天偷拍| 五月天啪啪啪| 99国产在线| 五月天婷婷综合| 俺去也婷婷| 日韩中文字幕| 久久婷婷东京热大香樵| 五月色色色| 婷婷色五月天在线观看| 丁香五月天婷婷激情| 91啪啪视频| 老美AA片| 中文字幕五月久久婷| 国产无人区大片| 色综合婷婷| 六月婷婷之青青草| 开心五月深爱五月| 婷婷色色五月| 九九综合图片网| 99热1| 色情五月天视频网| 精品久久久人妻| 超碰人人操| 激情綜合W W W,激情五月天| 男人大jjc女人免费视频| 久久sp免费视频| 91热在线| 2025年最新亚洲在线欧美| 日本人人干| 色婷婷基地在线| 亚洲九九99精品视频在线播放| 真实亲子乱子伦高清在线观看| 操一区| 99国产精品久久久久久久久久久 | 99热精品在线| 99九九综合久久九九| 婷婷五月色播放| 久久五月天综合| 玖玖综合色| 极品少妇XXXX精品少妇偷拍| 五月丁香久久网| 日本美女天天日天天爽| 综合久久高清| www.cao.com久久| 五月丁香欧美综合| 99热这里只有精品最新地址获取| 狠狠干婷婷| 99ri视频在线观看| 六月天六月婷| 五月天婷婷基地| 大香人妻| 五月丁香色婷| 五月天激情国产综合婷婷婷| 成人AV在线电影| 曰日爽日日操| 色五月综合激情网| 丁香婷婷久久| 色婷婷五月综合| 亚艹艹| 深爱激情五月网| 日本A片一区| 五月婷婷深深爱爱| 九九热免费| 亚洲爱婷婷| 99亚洲大片精品永久在线观看 | 五月天婷婷色| 婷婷五月电影| 九九热免费视频| 在线不卡AC| 色婷婷六月性| 丁香婷婷激情| 五月丁香综合啪啪啪啪啪| 亚洲五月丁香六月婷婷| 少妇婷婷五月天| 互月天综合| 国产精品美女久久久久AV超清| 香蕉综合在线| 思思热精品在线| 91打屁股视频网站| 激情网婷婷五月天| www.久久久久久久久久久| 天天日天天爱天天噪| 成人做爰黄A片免费看直播室男男| 97人人干| 婷色五月| oVV4WIB3vFi8D| 开心激情网五月天| www色婷婷久久综合久色| 中文字幕av久久爽一区| 久久婷色| 99热免费| 能直接看的AV网站| 国产黄色av| 人妻内射视频| 久热亚洲| 国产一级片| AAA久久| 久久艹 五月天| 五月婷婷熟女| 亚洲色图欧美色图日本视频| 五月涩涩网| 久久久精品免费啪啪国| 最近中文字幕大全免费版在线| 九七色色六月丁香| 欧美激情综合色丁香婷婷五月天| 爱狠射| 停停五月天激情网| 激情婷婷九月| 人人摸人人搞| 天天操天天爽天天爱| 亚洲最大成人综合网720P| 99久久这里只有精品免费官网| 99热66| 九九热在线观看视频网站| 婷婷中合| 色婷婷激情四射视频| 色婷婷六月天| 国产全是老熟女太爽了| 蜘蛛女侠2003满天星免费观看| 日韩精品无码AV| 99热亚洲精品| 五月青青草综合| 欧美黄色一级| 日本一道久久| 五月婷婷无码专区| 99噜噜| 狠狠干狠狠色| 五月天狠狠| 色5月婷婷| 98国产精品综合一区二区三区| 丁香五月综合亚洲| 五月色色色| 天天色天天爱天天舔| 日韩一区二区A片免费观看| 激情六月婷| 综合久久久| 国产亚洲精品久久久久久牛牛| 亚洲va欧美va国产综合久久久| 五月婷婷六月丁香首页| 欧美性猛交AAAA片黑人 | 国产婷婷五月色情综合| 婷婷五月天另类视频| 91窝窝| 婷婷五月天综合在线| 丁香五月23111| 国产成人在线不卡AV| 中字幕视频在线永久在线观看免费| 丁香五月婷久久| 色五月天.con| 亚洲AV免费国产电影| 99久久这里只有精品| 婷婷五月天成人网站| 色综合久久综合中文综合网| 99日热在线视频| 激情五月天色色网| 丁五月激情视频免费| 五月天激情网址| 五月丁香色综合| 国产成人网址| 天天干天天干天天干天天干天| 五月天激情无码高清| 色五月琪琪| 五月天丁香啪啪啪啪| 五月激情视频| 色婷婷成人| 色吧99| 国产精产国品一二三在观看| 亚洲五月婷婷| 激情综合网五月| 26uuu欧美激情另类| 欧美综合婷婷欧美综| 9l视频自拍9l九色9l成人| 影音先锋高清无码资源网| 丁香五月天堂网| 五月丁香亭亭| 五月婷婷六月色| 99爱无码| 狠狠色噜噜狠狠| 99色啊| 开心五月色婷婷综合开心网| 国产欧美va| 久久草婷婷丁香网站| 综合狠狠伊人| 国产VA播放| 欧美激情中文字幕| 国产资源在线视频| 9精品视频在线| 人人射av| www.激情五月天。com| WWW.久久99| AV成人在线网站| 人人操五月天| 五月丁香六月欧美综合网站| 亚洲成人免费电影| 色色婷| 日韩高清成人| 丁香婷婷色五月| 国产成人综合在线| 操操操操操操婷婷五月天| 一起草无码| 成人色图情色成人网 www.5b5b5bcom 五月天 | 色婷婷中文字母五月丁香| 久婷五月| 婷婷五月天成人动漫 | 91欧美日韩综合| 在线观看中文字幕亚洲| 九九精品在线视频观看| 五月色婷婷综合色| 天天干天天日日| 超碰AAAAAAV| 激情婷婷另类| 久色婷婷200| 色五月激情网| 久久九九色| 久久综合五月天| 久热一区| 欧美三级级99久久| 六月丁香深深爱综合网| 色婷婷五月网| 日本欧美成人片AAAA| 九九热99免费视频| 中文字幕人妻熟女在线| 99re久热| 天天艹天天综合网| 五月天激情小说婷婷基地| 婷婷六月天激情| 丁香五月影院| 久久久激情视频| 五月天激情国产综合婷婷| 97人人操人人干| 五月综合激情啪啪啪啪啪| 狠狠色九月| 久久久97| 五月综合缴情网| 五月精品| 中字幕视频在线永久在线观看免费| 超碰在线50| 亚洲AV免费国产电影| 国产亚洲色婷婷久久99精品91| 七七婷婷综合| 久久免费操| 激情伍月 欧美| 五月丁香婷婷综合视频| 99这里有精品| 久久婷婷综合色丁香| 入口五月婷婷六月香| 婷婷激情丁五月| 欧美 日韩 成人| 亚洲无码99| A1片久久| 伊人婷婷五月| 色五月网址| 五月丁香婷婷老司机| 二色AV| 日本激情综合| 无码99| 亚洲一区二区无遮挡A片| 丁香六月婷婷综合麻豆| 亚洲综合99| 激情玖玖综合网| 九九热a| 性色五月天| 久久精品一区二区三区四区| 99,色| 色色性爱视频| 五月丁香久久久| 国产激情久久| 六月99天天婷婷激情综合| 久久丁香综合香蕉| 99区视频| 五月婷婷在线免费观看| 国产精品视频免费看| 久热播这里只有精品| a在线观看| 色婷婷啪啪啪啪啪啪| 六月丁香开心婷婷欧美| 婷婷色丁香五月| 天天做天天爱天天高潮| 伊人干综合| 少妇搡BBBB搡BBB搡毛茸茸 | 欧美婷婷九月| 久久综合五月天| 色欲色欲久久宗合网| 狠狠香婷婷五月| 丁香六月久久| 久久性操| www.婷婷六月天| www.com.色色| 丁香激情五月| 亚洲成人超碰| 秋霞AV淫| 日韩人妻无码专区| 五月丁香婷婷色| 久久刺激网| 99热这里都是精品| 婷婷综合视频| 五月久久婷婷丁香| 91人人操人人| 99爱精品| 久久五月丁香六月婷| 天天日日夜夜| 人妻久久久久久久久| 疯狂做受XXXX高潮A片动画| 五月婷婷与六月丁香图片激情| 久久精品99| 色婷婷在线播放| 久久ww| 久久婷婷精品| 久久激情综合| 免费久久这里只有精品99| 色欧美一级| 国际国外精品欧洲南美洲专区无码不卡| 欧美性色A片免费免费观看的| 丁香五月婷婷色五月| 超碰成人黄色网| 婷婷射婷婷舔| 91久久1118| 91久久久久久| 影音先锋女人AA鲁色资源| 天天综合.com| 五月婷av| 亚洲av网站在线观看| 精品思思久久| 婷色影院| 91精品久久久久久久久| 99噜噜噜在线播放| 伊久大香蕉| 丁香婷婷深情五月亚洲| 色婷五月| 一本婷婷丁香久久| 激情六月婷婷| 激情亚洲色图片丁香综合| 99re在线免费视频| 九九99久久| 五月开心啪啪| www.jiujiujiu| 六月丁香五月婷婷| 激情综合激情五月一起草| 色婷婷免费视频| 99热综合| 99久久精品国产色欲| 六月激情久久婷婷| 91啪啪啪啪| 丁香九月婷婷| 激情五月激情综合网| 婷婷五月激情网站| 五月久久| 五月丁香久久| 五月丁香大相交| 天天激情视频| 成人免费在线电影| 日本视频不卡123区| 任你爽精品免费视频6| 人人干人人操人人摸人人做| 婷婷五月网图片区| 激情AV网| 99热免费| 色欲婷婷五月天丁香| 久久亚洲网| 美国天天操无码| 99热综合| 91精品久久久久| 五月丁香婷婷激情澎湃四射| 激情六月丁香综合| 五月婷婷丁香啪啪| 9九九久久精品无码专区| 99精品在线| 曰日爽日日操| 九九热在线视频,| 欧美色图天堂网| 国产综合A片| 色五月婷婷五月天| 天天狠天天叉| 99九九视频| 婷婷综合六月| 九九一综合精品| 色色五月天婷婷| 国产99久9在线| 七月丁香婷婷 色色| 婷婷天堂站| 成人五月天丁香| 欧美丁香婷婷五月天| 亚洲精品小视频| 婷婷五月天激情文学小说| 99色色| 97热超碰| 操操操91| 婷婷中文字幕网| 狠狠五月综合在线 | 99re这里只有精品视频6| 久久资源网五月婷| 天堂久久婷婷| 14色综合婷婷| 色综合香蕉| 色婷婷影音| 大香久久综合网| www.seqingwuyuetian| 色色色色欧洲| 久9精品| 国产亚洲色婷婷久久99精品9j| 丰满少妇乱A片无码| 亚洲人妻av| 狠狠色综合网站久久久久| 久青操| 停停五月色宗合| 色五月婷婷五月| 深爱五月激情| 日本成人噜噜噜| 亚洲这里只有精品| enecarbon-materials.com污K127封锁请涟系@wip1688 | www久久久久| 久久婷婷综合色丁香| 日韩欧美婷婷丁| 九月av在线| 激情综合色婷婷啪啪六月天| 欧美日韩成人一区二区| 九九九九国产| 综合亚洲五月天| 婷婷六月丁香色| 99re思思精品在线观看| 伊人AV五月婷| 久re热视频| www.久久久.com| 67194国产| ri电影在线| 久久五月丁香综合17C| 亭亭五月激情亚洲在线| 婷婷五月天电影区小说区| 亚洲无码色色| 久热91| 婷婷天堂站| 黄色视频网站在线播放| 久久久久婷 | 国产精品18久久久| 丁香五月天影院| 六月婷婷香蕉| 激情综合五月激情| 久久激情五月网| 日日干日日| 26uuu日韩| 欧美十二区| 久久综合播放| 色色成人網| 五月婷婷丁香在线| 久久人妻久久| 久久玖玖99| 丁香五月婷婷激情网| 思思热性操| 亚洲熟妇无码乱子AV电影| 狠狠操狠狠插| 啪啪五月综合| 五月婷婷六月丁香综合视频在线| 五月天激情久久| 国产亚洲99久久精品| 色色色色色日韩午夜激情 | 永久天堂日本| 丁香女人五月天| 玖玖精品视频| 99视频只有精品| 91丨九色熟女丨首页| 亚洲激情图文小说| 综合网啪| 亚洲无码影音| 五月丁香在线视频观看| 可以直接看的av| 国产毛片欧美毛片久久久| 亚洲成人网站在线| 五月丁香六月情婷婷久久| 成人短视频在线| www.五月天激情| 五月婷婷中文字幕| 亚洲AV成人无码电影| 中文久久久人妻| 丁香五月激情网| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 婷婷五月综合网| 国产毛片操B| 精a品a视a频| 色在线99| 综合婷| 六月丁香五月激情网| 久机视频这只有精品| 另类国产区| 丁香色综合| 中文字幕乱码亚洲精品一区| 色情综合网| 九九热99免费视频| 色综合久久88| 五月丁香淫淫婷婷婷| 91九色最新视频| 再綫Av免费視品| 丁香五月天堂网| 久久久性爱网| 婷婷五月天AV在线| 怡红院91a√| 婷婷五月18永久免费视频| 人妻丰满精品一区二区A片| 777色婷婷爱五月| 色综合婷婷| Www99热| 欧美va在线观看| 操逼综合网| 五月丁香激情婷婷| 91n啪啪| 99精品福利视频| 粉嫩av蜜桃av蜜臀av| 五月天激情黄色网址| 婷婷五月天伦理| 思思热视频在线观看| 97碰久久| 精品婷婷| 九九热这里只有精品23| 99性视频| 亚洲五月丁香综合网| 色婷婷久久综合中文久久一本| 日韩狠狠色| 婷婷丁香五月天影院 | 激情婷婷丁香色五月综合| 99亚洲精品| 色情五月天首页| 91久久日日| 中文网av| 九九超日本| 中文字幕av在线播放| 五月丁香好婷婷A片网| 99日韩| 欧美性爱五月天| 激情婷婷五月天| 色噜噜,噜噜色| αv中文字幕在线观| 久色五月| 五月婷婷导航| 色久天| 丁香六月亚洲| 五月婷婷性爱网| 久久久久婷| 91人妻色色网| 国产麻豆视频| 看片视频在线免费日产在线看| 成人综合AV| 五月婷婷色色| 激情五月视频在线婷婷| 色呦呦美女| 99热综合| 99精品视频网站| 亚洲AV综合在线观看| 大香蕉五月天婷婷| 五月婷婷网五月在线| 久久婷婷五月综合激情国产| 开心五月网| 开心五月丁香啪| 99色五月| 九九在线视频| 亚洲色五月婷婷| 久久五月天精品视频| 亚洲综合色婷婷文学| 97在线/亚洲| 久久五月丁香六月婷| 97久久超视频| 这里只有精彩视频| 深爱激情五月婷婷| 色综合久| 婷婷五月激情视频| 好好干Av| 色情五月| 少妇熟女视频一区二区三区| 激情综合激情综合| 久久这里在精品视频| 久久aaaaa| 秋霞免费视频| 五月天婷婷色色网| 久噜久噜| 去干网av| 97超级碰碰碰| 久在线88综合| 九九热在线99| 亚洲视频99| 久久久月丁香| 日夜操B| 99热全是精品| 婷婷五月激情欧美大胆视频| www.五月.com| 女人被男人吃奶到高潮| 毛片新网地| 五月丁香激情片| 九色 在线| 99热国品免费| 狠狠狠狠狠| 99热这里只有精品86| 色情性爱视频网址| 991精品在线视频| 伊人在线另类| 色婷婷成人做爰A片免费看网站 | 色婷婷激情五月天| 亚洲视频色色| 久久五月婷婷电影| 五月停停色色丁香| 狠狠久久婷| 色色9 9| 色婷五月天| 五月丁香六月欧美综合网站| 九色91视频| 狠狠色噜噜狠狠狠888| 思思精品久久艹 | 天天久| 这里只有精品69| 久久99久久99精品免视看婷婷| a网站免费观看| 一区视频网站| 这里有精品| 色婷婷婷婷五月天| 五月六月激情| 久久机热思思热| 亚洲综合婷婷五月天| 天天插天天日天天爽| 美女五月天婷婷| 九九热视频精品2| 日本99久久| 久久99久久久久久| 久久99久久99精品免视看婷| 婷婷综合97| 五月色色网| 色色色色五月天| 91狠狠综合久久久| 激情五月综合网| 久热久色| 婷婷五六日| www.com操| 婷婷五月久久| 五月开心深深爱激情综合 | 色一情一乱一乱一区91| 黄网免费观看| 97久久人人操| 九九热精品在线| 五月天综合| 精品欧美一区二区三区久久久 | 91综合色| 亚洲Va成人| 久久99热这里只有精品23| 狠狠色婷婷丁香六月| 99.色| 婷婷色五月在线视频| 五月天天天天天天天天天天天婷婷婷| 亚洲秘 无码一区二区三区妃光/1| 中文字幕AV网址| 免费黄色片子| 大香蕉婷婷| 色吧网91| 婷婷五月丁香色综合| 久久久性爱视频| 色婷婷基地在线| 26uuuavcom| 日日夜夜狠狠操| 欧美久久婷婷| 久久99热这里只频精品6学生| 亚洲狠狠色丁香婷婷综合久久| 在线不卡的视频| 最新久久网址| 中文久久久人妻| 99热在线成人网站| 97九色| 极品人妻VIDEOSSS人妻| 一片AV片免费播放| 日本三级韩三级99久久| 五月婷婷六月爱| 国产婷婷五月色情综合| 婷婷中文字幕| 97人人干视频| 午夜激情婷婷| 婷婷色日本| 狠狠综合网| 久久婷婷五月天| 综合 蜜月 婷婷| wWwCom夜操wwW| 婷婷5月九九| 26uuu欧美日本| 五月丁香婷婷激情爱爱| 五月婷在线观看| 五月天激情开心网| 97人人草| www.玖玖婷婷在线| 五月婷婷六月丁香激情深爱| 91人人爽久久涩噜噜噜| 五月婷婷综合网| 色色婷婷婷丁香五月天| 热久久思思热思思| 九九热re99re6在线精品| 久久精品一区二区三区四区| 亚洲综合在线播放| 开心五月婷| 九九精品免费| 狠狠色网| 五月婷婷免费| 久久久精品色| 操操精品| 淫荡综合网| 五月天激情国产综合婷婷婷| 大香蕉伊在| 六月婷婷影院| 丁香六月婷婷| 色玖玖导航| 婷婷丁香人妻天天久久| 欧美精品XXXXBBBB| 99爱爱| 五月丁香香蕉| 九九香蕉网| 五月天成人综合| 成人国产网站在线免费看| 五月天激情四射网站| 成人AV在线网站| 一本久道综合色婷婷五月| 九九激情视频| 99re这里只有精品在线观看| 狠狠综合网| 五月婷婷激情久久| 色 色 色综合com| 日本黄色一级| 性婷婷| 丁香色婷婷五月天| 久久伊人9| 五月天最新网| 婷婷五月天综合久久日| caopeng97日韩| 五月婷婷在线免费观看| 91视频一起草| pom538精品视频| 色射7856五月天激情四射| 五月丁香六月花| 欧美日本日韩| 高清激情av在线观看| 天天天天天天操| 婷婷五月激情图片| 色婷婷丁香五月| 亚洲AV成人无码电影| 亚洲欧美999| 懂色av粉嫩AV蜜臀AV| 色情激情五月| 一本色道久久88加勒比| 综合激情五月丁香| 丰满少妇猛烈A片免费看观看| 華人性愛AV在線| 天天爱天天做天天操| 色色综合无码| 九九热视频在线观看| 人人草公开操| 婷婷99狠狠躁天天躁| 美女亚洲五月丁香| 色久综合| 五月婷婷之六月丁香| 熟女强人妻一区二区三区四区无| 开心五月婷婷激情网| 伊人婷婷大香蕉在线| 五月丁香基地| www.色情五月天.com| 91热网址| 九九99久久| 婷婷五月天成人网| 亚洲瑟瑟精品在线| 天堂二区| 久久99精品久久久久久三级| 玖玖综合色| 啪啪一区| 国模淫穴色图| 9 9 9色色| 成人国产综合| 色之综合网| 爱久久小说下载网| 久久性爱视频这里只有精品| 第五婷婷伊人丁香| 欧美内射AA| 婷婷五月天Av| 99久久久精品| 色玖玖爱| 丁香六月婷婷| 色婷婷五月网| 色噜久| 日本片日本片祼观看网站在线看中文版网页在线看 | 久久五月情| 一起草Av| 色婷婷在线综合色播网| 国产97在线日韩亚洲女人被黑人巨大| 久久久噜噜噜久久人妻| 九九aV| 欧美内射AAAAAAXXXXX| 五月丁香六月激情啪| 五月天丁香久久| 97精品综合| 丁香六月婷婷激情| 超碰9| 国产欧美熟妇另类久久久| 亚洲综合热| 九九热亚洲中文在线观看免费| 国产操B| 噜噜干日本| 99亚洲大片精品永久在线观看| 97超级碰碰碰| 五月丁香影院| 免费观看大片视频 丁香婷婷 六月欧美| 色五月天影视| 丁香六月天婷婷| 色五月AV| 九九99久久| 思思视频精品| 久久婷视频| 蜜臀AV在线观看| 丁香六月激情| 婷婷五月丁香五月天| 六月婷婷久久| 免看黄大片AA | 91久久综合亚洲鲁鲁五月天| 伊人婷婷五月| 91精品久久久久久综合五月天| 在线看AV| 婷婷欧美| 综合一区二区三区| 激情五月天网页| 五月丁香激情综合| 激情文学 综合 九月| 婷婷综合久久| www999日韩精品| 欧美成人精品一区二区| 五月婷婷在线视频免费观看| 久久加勒比| yw国产AV| 亚洲乱码日产精品BD| 碰碰91| 一丁香五月天月AV| 五月天婷婷永久免费视频| 婷婷丁香五月亚洲欧美| 九九色天堂| 丁香花综合永久入口| 99乱视频| 中文字幕,综合,91| 偷拍99在线视频观看| 大地资源色婷婷视频在线| 色九区| 99热在线看片| 婷婷丁香色五月| 色色婷婷综合网| 婷婷五月激情六月丁香| 99热这里有精品24| 久久婷婷七月丁香| 开心色五月天久久久久久久| 啪啪啪啪五月天| 99视频内射三四| 六月丁香婷婷网| 国产精品视频免费看| 激情婷婷网| 狠狠狠狠草草| 国产午夜成人AV在线播放| 亚洲精品国产成人AV在线| 色XX综合网| 天天射影视综合网| 免费AAAAA网| 九九热av| 色人久久| 九久久精品视频99| 丁香婷婷久久 | 五月天自拍网| 久热99| www.yw色| 丁香9月婷婷| 综合久久丁丁香婷| 九九av| 丁香六月激情综合| 99热久| 久久婷婷五月天| 亚洲精品V天堂中文字幕| 婷婷精品视频| 激情五月影院| 情色五月天网站| 日本在线视频播放91| www.91九色| 九九热九九| 欧美这里只有精品| 97人人操在线| caopeng97日韩| 热中文字幕| 激情综合4月| 五月丁香婷婷AV天堂| 亚洲无码成人性爰网| 色人妻五月| 五月丁香六月婷婷操操操| 婷婷五月天AV| 97婷婷狠狠| 26uuu在线观看| 亚洲熟妇AV乱码在线观看| WWW嗯嗯啊啊啊啊| 99久久欧美| 五月婷婷九九热| 中文字幕在线日亚洲9| 26uuu四色| 五月婷婷欲色| 婷婷五月激情图片| 丁香五月天黄色片| 五月激情在线| 狠狠色婷婷综合开心影视| www,超碰| www.粉嫩av.com| 色色亚卅| 性综合网| 噜噜噜久久| 日韩ww| 天堂色色色| 九九人妻福利| 激情婷婷五月天在线观看| 开心网五月色婷婷| 婷婷开心激情| 伊人丁香五月天丁香在线婷| 婷婷丁香91| 狠狠色婷婷在线| AAA亚洲AV| 五月丁香亭亭操逼| 国产亚洲精品久久久久苍井松| 丁香六月欧美| 久碰视频| 五月婷婷亞洲中文| 久久婷婷综| 成人龟情网丁香五月| 伊人玖玖精品| 婷婷五月天视频小说| 天天色99| 屁股翘好撅高迎合跪趴| 色五月AV| 天天日夜夜拍| 岛国在线观看91| 天天操五月天| 激情五月婷婷免费视频| 激情五月色综合| www.99在线| 9九九久久精品无码专区| 91seav| 1995年关宝慧版蜘蛛女| 人人操插| 九九色video| 99热只有精品在线播放| 99这里只有| 五月丁香| 91久久综合亚洲噜噜成人在线| 天天爽日日搞| 91热在线| av首页在线| 色欲婷婷夜夜| 亚洲成人高清在线| 五月 婷 久| 久久这里面只有精品视频| 操骚货在线| 成人五月丁香花| 日本色频| 五月丁香婷草| 亚洲成人av在线观看 | 97超级碰碰碰久久久| 久久综合激情五月天| 棕合影院色色| 丁香深五月婷婷| 婷婷五月天综合蜜桃| 丁香五月婷婷六月| 999久久久国产精品| 色婷婷五月天综合网| 丁香五月色情| 亚洲黄色影视| 丁香五月成人| 偷偷操九九| 开心五月综合激情综合五月| 日韩成人综合网| 色婷婷A| 亚洲无码色| 色爱爱综合网| 99久久er| 中文字幕在线免费看线人| 《诡秘之主》在线观看| AV成人在线播放| 日本欧特黄色刺激一区影视久精品无码| 欧美亚洲婷婷五月| 亚洲乱码日产精品BD| 五月色婷婷亚洲 | www。久久久久一b。Cc| 99色色热| 五月激情六月丁香| 五月丁香婷婷啪啪| 久久综合性| 色五月91| 丁香九月婷| 婷婷九月激情| 激情综合网五月丁香| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 欧洲不卡视频| 九九99九九99| 99热精品观看| 久久99精品久久久久子伦| 99色在线观看视频| 人人操人人干AV| 五月激情综合网| 五月婷婷深深爱| 亚洲综合视频在线| www.婷婷五月| 久久五月丁香| 五月份婷婷| 亚洲视频一区| 狠狠干青青草| 亚洲精品无码A片一区二区| 亚洲最大五月六月丁香婷婷| 久久久久久久久久久久久久久久久精典| 欧美VA在线| www.99精品在线|