免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
夜夜操天天干| www激情| 9l视频自拍九色9l黑人| 激情五月天偷拍综合网| 久久精典| 国产成人精品一区二三区熟女在线| tingtingzonghewang| 婷婷色色综合| 欧美丁香五月| 第二色AⅤ| 99热8在线| 六月丁香久久| 91操操| 亚洲最大成人综合网720P| 六月丁香激情综合| 97碰免费视频在线| 日本www免费九九| 激情五月综合婷婷| 婷久看人爽| 久久免片| A片一曲| 九九性视频| 逼逼AV| 伊人成综合五月婷婷| 亚洲99在线| 日本熟女视频一区二区| 色色色色色色色色色色色色色五月天| 色五月综合网| 五月天狠狠色| 天干干夜夜操| 91色逼| 国产亚洲精品AAAA片APP| 1010日日无码| 99热在线观看| 国产婷婷久久| 日日躁夜夜躁狠狠久久AV| 九九视频这里只有精品| 六月婷婷狠狠| 日韩性视频| 色综合综合综合| 这里只有精品久久| 色情五月天婷婷| 色玖玖综合网| 色九月综合网| 九九99九九精品免费 | 九九色综合| 5月婷婷性视频| 色婷婷精品视频| 丁香五月天之婷婷影院| 91视频五月丁香| 99热欧| 欧美成人日韩| 欧洲综合一区| 婷婷综合视频| 色五月激情婷婷| 色欲天天综合| 啪啪啪五月天| 最新午夜理论片| 美国不卡视频| 31色区视频免费看| 男人操女人高潮91视频| 日本色婷婷| 亚洲激情网| 色青青视频| 色三级色三级| 99热精品观看| www. 五月. com| 熟妇无码乱子成人精品| 婷婷六月综合激情| 超碰人人艹| 色婷五月天激情| 99爱视频免费看| 婷婷五月天小说| 大香蕉99| 99热手机在线精品| 91呦呦呦| 色综合综合色| 99色视频在线观看| 色婷婷AV在线| 黑人巨粗进入警花疼哭A片| 艳妇野外情欲放荡HD| 91九色PORNY大屁股| 狠狠爱夜夜| 99小视频| 一级黄色尤物综合视频手机在线观看| 久久九九99| 色婷婷成人做爰A片免费看网站| 五月天开心色色网| 五月天啪啪视频| 99热这里只有精品国产免费| 亚洲色色香蕉| 五月婷婷偷拍| 欧美色色色色色色色色色色| 五月永久激情| 日本九九九九| 国产黄色av| 激情久久久久| 这里只有精品网| 婷婷97碰碰| 亚洲五月天激情| 中文字幕在线人妻| 五月激情综合激情五月| 91婷色| 另类天堂| 粉嫩av懂色av蜜臀av熟妇| 九热在线这里有精品6| 婷婷六月情| 五月丁香婷婷基地| 狠狠久综合| 亚洲va日| 亚洲永久免费| 亚洲成人网站在线| 日韩十国产极品久久| 超碰免费人妻| 婷婷五月天大香蕉| 五月色俺婷婷| 思思热在线| 色综合色色色色| 第2色五月婷| 99久久玖玖| 97在线99| 99热这里只有精品10| 殴美综合激情五月天免费视频| 精品一二三区久久AAA片| 丁香五月婷婷影院| 99精品久久久久久久婷婷久久| 另类激情五月| 婷婷综合色网| 俺去也综合| 99热在线观看| 亚洲一色色色色色色色色| 色五月激情五月| 丰满女老板BD高清A片| 天天搞天天色综合| 91青娱乐青青草| 丁香五月天堂婷婷| 思思w99| 99热这里只有精品中文字幕| 婷婷精品视频| 五月丁香综合激情| 五月天激情综合网俺也去| 专区无日本视频高清8| 丁香六月情| 中文字幕av亚洲| 十一月婷婷激情四射| 中文字幕乱码亚洲精品一区| 国产片天天爽夜夜爽| 久久这里只有精品热在99| 久久精品A片777777| 九九久久五月天| 婷婷五月草| 中文字幕无码AV| 99热99网| 日韩成人不卡| 五月婷婷自拍视频| 久久久九九视频精品18| 色婷婷亚洲六月婷婷中文字幕| 天天爽天天爽夜夜爽| 五月丁香啪啪| 五月天天天操天天爽夜夜操| 欧美三级A做爰在线观看| 亚洲激情综合网| 激情久久丁香| 欧美丁香五月97色| AV中文在线| 五夜婷婷| 成人无码精品1区2区3区免费看| 婷婷五月天AV| 久久久GOGO无码啪啪艺术| 色色五月天婷婷| 婷婷91| 久久综合五月天| 色欲天天综合网| 婷婷精品免费久久| 亚洲第一综合| 色婷五月天激情| 五月婷婷久久爱| 天天操天天谢| 99丁香五月婷婷在线| se99视频| 日韩999| 色色网站在线| 国产在线另类五月婷婷| 婷婷色色丁香| 日本不卡中文字幕| 99'无码| 超碰国产在线播放| 五月天播播| 五月婷久久草| 免费视频无码| 久8色色| 久久爱综合| 丁香五月激情综合| 男人天堂99| 亚洲色模骚货| 人人操97| 婷婷综合中文| 99久在线观看| 99在线看片| 亚洲av另类在线观看| 激情五月天电影| 久9视频免费播放| 激情婷婷丁香五月天| 人人亚洲| 99草视频在线观看| 免费无码毛片一区二区A片| 啪啪激情网站| 亚洲最大在线| 97人碰人操| 99在线观看精品视频| 婷婷五月天奸女| 国产做A爰片毛片A片美国| 99热骚货| 成人午夜无码视频| 操比激情五月| 久久99精品视频| 26uuu另类| 色九月婷婷综合| 激情五月天婷婷| 涩婷婷五月天| 亚洲日韩人妻操逼| 国产白丝在线一区| 91九色白丝| 91成人电影| 夜夜躁狠狠 | wWw色五月| 亚洲色频| 色www久视频| 日日夜夜天天| 天天插天天| 欧美色九| 9 9热这里有精品| 丁香五月天色| 九九综合网色全集| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 五月婷婷97| 依人大香蕉| 99热精地址| 亚洲色碰| 九久久精品视频99| 九月性爱网| 五月天婷婷视频| 五月丁香婷婷激情澎湃四射 | 婷婷色色综合| 婷婷伊人网| 天天爽天天操| 色婷婷啪啪| av大片在线| 99久久久久久| 天天干夜夜想| 日日做夜夜爱| 婷婷激情鹿城五月天| 97久人人| 丁香六月婷婷色播| 人碰91| 午夜少妇在线观看视频| 天天狠狠夜夜狠狠2023| 久久五月天婷婷| 日日操日日撸| 五月天成人网在线观看| 婷婷.com| 操日挥操日日| 99爱无码| 五月六月婷婷| 色色网五月激情| 久cao香蕉影院| 亚洲黄色影视| 人妻人人操| 色狠狠999综合| 天天操屄网| 狠狠干激情五月| 五月丁香激情五月天| 91精品无码| 国产成人AV在线播放| 182.t午在线观看| 江苏少妇性BBB搡BBB爽爽爽 | 久久久潮喷-久久久九九-成人AV| 97久久综合网| www色哟哟| 五月天丁香色色| 97精品人人A片免费看| 99re6久热只有精品6在线直播| 九九色综合网| 91黄色五月天视频| 久久人人九| 一区=区操屄高清大全av| 超碰人人色| www.99热| 搡BBBB搡BBB搡18 | 婷婷五月丁香国产| 美女91一起草| www.91.com黄| 五月综合视频在线| 五月天大香蕉av| 色色五月天婷婷| 婷婷在线视频| 1024在线一区| 狠干综合| 婷婷五月情| 狠狠操综合| 日本熟女视频一区二区| 在线色五月婷婷| 色婷婷五月天天天做| 日日夜夜青青草| 五月丁香亚洲五月| 五月天婷婷在线AN| AV在线中文| 精品久久99| 婷婷丁香五月综合| 99在线视频观看| 丁香狠狠色婷婷久久无码视频| 综合激情四射一theav| 91精产一区三区免费观看| www99在线观看视频| 欧美超级视频97| 97操在线视频| 99视频这里只有久久精品 | 草操AV在线| 97深爱伊人综合| 婷婷六月视频| 亚洲无码播放| 2018夜夜草| 99啪视频在线观看| 五月6香色婷婷视频| 丁香六月av| 婷婷色情六月| 91操人视频| 激情九月丁香婷婷| 婷婷亚洲综合| 这里只有精品视频在线看| 婷婷五月丁香在线视频| A久久| 91干婷婷| 伊人久久艹| 思思99re这里只有| 色射影院| 男人的天堂99| 九月丁香婷婷综合激情| 丁香五月丐人妻| 9超碰在线| 午夜婷婷| 激情深爱综合网| 伊人久久婷婷| 色操综合| 婷婷激情丁香五月天综合| 国语精品探花| 超碰九色| 精品99在线| 国产精品色情AAAAA片软件| 色色六月| xx色综合| 综合久| 欧美成人精品三区综合A片| 影音先锋一区| 亚洲性爱AV| 激情综合网五月在线播放| 伊人色欲五月天| 91九色|疯狂|高潮|对白|| 99国产精品白浆在线观看免费| 国产亚洲99久久| 综合在线丁香五月| 色婷婷六月| 成年视频免费观看| 大地资源色婷婷视频在线| 日本综合久久| 99视频在线播放大全| 五月天激情Av| 五月开心网| 99精品在线观看视频| 在线A色| 狠狠狠狠狠狠狠狠| 激情六月丁香| 99精品无码| 丁香久久在线| 色婷婷丁香五月天在线视频| 五月色亚洲| 婷婷五月中文字幕| 第四色婷婷丁香五月| 久久久久久久人妻| 色玖玖| 色色色网站| av在线婷婷| 日本婷婷网| 天天肏视频| 色婷婷在线影院| 欧美日本97| 激情五月无码| 在线观看国产高清视频免费网站| 久久色五月天| 啪啪一区| 狠狠色性| 性做久久久久久久免费看| 九九热超碰| 國語久久婷| 99超碰在线观看| 亚洲色优| 天天干天天操天天射 | 六月色国内综合| 色五月婷婷网| 人人色AV| 99视频热99| 婷婷亚洲丁香五月| 国产精品91抖高| 天天爱天天做天天舔| 久久综合五月天| VA日本视频| 婷婷五月天激情网| 人人舔人人色人人高潮| 俺去也五月| 婷婷五月天,影院| 久久精品99| 五月婷婷与六月丁香图片激情| 九九视频这里只有精品| 99久久免费性爱视频`| 99熟女| 金桔一区二区ab地址| 狠狠干综合| 天天爽夜夜爽夜夜爽精品| 色五月天在线观看| 婷婷丁香久久五月综合| 久久综合五月天激情小说网站 | 香蕉久久国产AV一区二区| 五月婷婷 六月丁香| 亚洲成av人影院| 五月色情网| 丰满少妇乱A片无码| 五月丁小婷婷激情四射| 丁香狠狠色婷婷久久无码视频| 男人的天堂99| 超碰在线免费| 五月激情婷婷开心五月| 欧美三级视频| 國語久久婷| 狠狠色丁香五月婷巨| 开心婷婷五月| 五月丁香龟婷婷| 久草网大香视频| 99干视频| 深爱激情网婷婷| 99在线资源视频| 婷婷性爱五月天| 九九自拍网| 97人人超| 99这里都是精品6| 丁香六月婷婷综合激情欧美| 无码激情AAAAA片-区区| 综合久久99| 久热九九| 五月天开心网| 99色激| 777精品久无码人妻蜜桃| 综合性视频99| 六月婷婷久久| 办公室少妇激情呻吟A片在线观看| 综合图区激情| 综合婷婷| av一区二区电影免费在线观看| 狠狠色五月| 男人的天堂999| 99在线视频观看| 色五月超碰| 五月丁香婷婷在线综合蜜桃| 综合超碰熟| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 婷婷五月天成人网| 超碰成人影视| 亭亭玉月丁香| 性爱视频久久| 婷婷丁香高潮了| 五月婷久久综合| 丁香六月色婷婷| 丁香婷婷在线| 夜夜躁狠狠| 夫妻超碰在线| 激情内射人妻1区2区3区| 亚洲成人网站在线播放| 国精产品一区二区三区| 六月丁香婷婷五月天| 久草 tingting| 国产精品成人在线| 尔尔AV一区| 久热这里这里有精品| 欧美三级视频下载| 综合天堂AV久久久久久久| 激情婷婷综合网| 婷婷伊人网| 五月丁香久久丝袜啪啪| 天天肏天天肏天天肏| 久久久天天啊| 操啊操av| 色综合五月婷婷狠狠干| 秋霞性爱AV| 久久艹网| 五月做爱| 亚洲偷| 99精品视频免费观看| 99热精品在线免费观看| 色大综合| 五月丁香综合久久| aaa丁香五月天| 91porn一起草| 色很久综合| 久久久久久99日本| 亚洲精品无人区| 婷婷五月成人| 久久综合干| 少妇人妻人伦A片| 激情网综合| 桔色成人官方网站| 色九月激情综合网| 丁香五月综合在线| 人人色AV| 伊人狠狠狠综合| 五月婷六月综合在线观看| 亚洲综合1024| 丁香五月91| 久久3p| 婷婷终合色图| 第四色大香蕉| 色婷婷88| 超碰97人人操| 五月婷婷性爱| WWW,激情五月天,COM| 五月婷婷色色色| 婷婷99热| 亚洲黄色影视| 成人做爰A片免费看网站找不到了| 超碰人人操在线| 九九99九九99| 91日韩在线| 5月激情天| 天天日日夜夜爽| 色 免费网站视频| 特黄三级片| 亚洲五月婷婷| 女人天堂av| 激情五月天之五月婷婷| 这里只有精品久| 久久99成人性爱高清视频| 天天草天天日| 五月天 无码| 五月天色区| 久久99热这里只频精品6学生| 99热这里只有精品9| 五月激情小说| www.久久| 亚洲欧美在线观看| 超碰自拍天堂| 大香蕉婷婷五月| 婷婷无码视频| 婷婷五日b| 六月五月婷婷| 五月色综合| 中文字幕永久免费| 六月丁香五月婷婷| 在线观看日韩12345区| 婷婷色色色| 欧美日韩国产伦精品日韩人妻一| 丁香五月天堂| 色综合久久88色综合天天人守婷| 999影院成人在线影院| 色99网站| 99热综合网| AA片在线观看视频在线播放| 五月天色欧美| se99高清无码| 另类综合婷婷五月天欧美视频| 人人摸人人| 思思热视频在线观看| 农村熟妇高潮精品A片| 91色五月在线观看| 久久久激情视频| 六月婷五月丁香| 九九免费视频| 免费亚洲婷婷| 看逼中文字幕| 深爱激情网五月| 人人操人av| 久久久ww| 久久婷婷五月丁香蜜桃网| 99热久97| www.五月天性.com| 精品99在线| 国产又爽又猛又粗的视频A片| 91综合在线观看| 这里只有精品免费在线视频| 九九机热| 色五月婷婷在线| 婷婷色狠狠| 婷婷五月成人| 99爱在线观看视频| 婷婷色色网| 亚洲人妻电影| 五月天婷婷久久综合| 欧美激情综合色综合啪啪五月| 中文毛片无遮挡高潮免费| 六月婷婷最新网址| 色综合五月在线| www,色婷婷| 色青青电影色五月| 婷婷激情小说网| 五月丁香中文| 影音先锋男人女人| 六月99天天婷婷激情综合| 亚洲第一精品成人999久久精品| 婷婷六月啪啪| 铁牛TV人妻| 午夜无码精品色综合久久| 久久九九爽| 婷婷婷五月香蕉| 激情综合播播| 超碰在线精品| 久久综合网桃花| 日本五月婷婷久久久六月丁香| 久久久婷婷五月亚洲97号色| 日本97人人| 天堂爱爱| 婷婷丁香五月激情| 欧美天堂久久| 天天干天天操天天拍| 免费无码毛片一区二区A片| 人人97碰| 一级二级色大片| 欧美日韩成人h| henhencao国产在线| 91操熟女| 日本一级| 玖玖午夜视频| 六月丁香婷婷大香蕉| 色5月婷婷| 涩五月婷婷| 五月丁香六月香香蕉| 天天爽天天| 色约约视频一区二区三区四区五区 | 激情5月婷婷| 欧洲亚洲免费视频9| 激情五月天色色网| 久草性爱| 91婷色| 天堂网啪啪| 色99网| #NAME?| 激情综合色| 五月丁久久| 伊人狠狠狠综合| 久久精品99国产精品日本| 女性自慰系列第五页| 99爱爱| 97视频久久| 欧洲亚洲免费视频9| 日本久久视频| 亚洲成人免费在线| 91五月天| 激情五月天丁香| 久久最新色色色| 99激情| 色五月激情问网站| 国产在线aaa片一区二区99| tingting五月天亚洲| 久久综合五月天| 久久人妻爱爱| 超碰在线免费观看日韩| 。久久久久久久久久久久久久人妻| 伊人热在线大香蕉| 夜夜操天天干| 开心五月婷婷婷美女| 丁香 久久| 亚洲乱码在线观看| 九九精品免费| 婷婷激情五月天色| 99精品手机在线视频| 青草激情综合| 综合激情五月婷婷| 亚洲操B| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 丁香五月大香蕉在线99| 桃色激情网| 激情綜合網址| 欧洲色| 操逼福利视频| 久久女人九九| 香蕉久久国产AV一区二区| 久青青久| 色啪久 | 毛片九九九九九九| 超碰大香蕉网| 色在线五月天免费| 69久热| 丁香五月婷婷激情网| 婷婷久久五月| 五月丁香综合久久夜夜| 丁香五月婷婷啪啪啪| 色欲操| 99久久9| 亚洲夜五月| 99精品国产在热久久| 婷婷五月噜噜| 五月丁香欧美综合| 亚洲欧洲中文日韩久久AV乱码| av五月天婷婷丁香| 国产精品大香蕉| 婷婷色色亚洲| 婷婷丁香97| 日韩六十路91性交电影| 激情图片99| 五月丁香| 婷婷在线视频| 激情网站综合五月天| 九九中文字幕九| 色五月五月婷婷| ji'qi'luan'ren'lun| 91九色首页| 在线中文字幕免费视频| 99热精品在线播放| 婷婷五月激情视频| 久久er这里只有精品| 色婷大香蕉| 欧美色频| 播五月开心婷婷欧美综合| 一区二区三区四区五区| 五月停停色| 一级黄在线| 色五月成人| 激情五月丁香综合网站| 婷婷五月天AV网| 人妻在线网站| 51精品国自产在线| 日韩一级片| 六月婷婷久久| 五月色丁香婷婷中文字幕| 99在线精品视频| 成人五月天综合网| 五月婷婷性爱| 婷婷五月AV| 天天久综合| 五月丁香婷婷激情久久| 综合啪啪| 老妇操B| 激情6月| 色婷婷丁香五月| 99久久久久久| 韩国激情五月天综合网| 久热只有这里精品| 天天爱天天做天天舔| 超碰人人干| av成人在线播放| 亚洲99热| 色吧婷婷五月亚洲| 亚洲色五月| 色婷婷视频在线| 综合性爱网| 色五月激情五月天| 五月天激情视频五月天| 激情图片婷婷| 99r这里只有精品哦| 99操视频| 99热主页日本| 99re久热只有精品6在线直播.com| va婷婷| 亚洲九九在线| 九九婷婷五月天影视| 99热久只有| 另类的婷婷| 玖玖国产视频一区| 五月婷婷av| AV在线大香蕉| 超碰免费大香蕉| 成人电影AV在线观看| 久久亚洲天堂| 激情九九六月激情免费视频| 五月丁香综合中文| 久热伊人9| 玖玖婷婷色| 激情久久月| 美女xx不卡| 91精品综合久久久久久五月天| 亚洲AV日韩在线观看| 激情婷婷五月丁香啪啪啪| 中文字幕中文有码在线| 天天碰夜夜操| 97超级碰人人| 久久五月天丁香花| 婷婷五月天毛片| 五月天停婷基地| 影音先锋91| 99热大香蕉| 99久.| 丁香五月天激情网址| 丁香六月婷月91婷月| 国产五月丁香在线| 激情五月综亚网| 九九九成人在线视频| 精品操逼一区二区| 婷婷久久图片| 在线看片av| 九九热这里只有精品首页| 伊人青草成人| 色婷婷丁香AV综合| 天天色综合图片| 天天想夜夜爽天天爽| 蜜桃婷婷狠狠久久| 色五月综合| 婷婷五月天成人动漫| 四虎婷婷五月天| 五月婷婷激情四月| 激情网五月天| 色色色免费视频| 欧美成人AAA片一区国产精品| 极骚大香蕉伊人| 91在线观看www| 中文字幕人妻在线| 新99色色色色色色| 久久婷婷色五月| 久久九九国产精品怡红院| 99热在线精品观看| 精品少妇人妻AV无码专区偷人| 欧在线一区| 亚洲综合草草| 丁香婷婷人妻综合网| 色狠狠色综合| 99久在线精品| 97在线观看| 色婷亚洲五月丁香| 五月丁香美女| 性色视频| 色爱五月天| WW婷婷五月天com| 九九亚洲无码| 婷婷久久国产视频| 永久免费一区二区三区| 久久婷婷五月天懂色| 婷婷五月天亚洲激情戏精品| 婷婷五月色情| 这里只有精品久久| 久久99久久久| 精品久久人妻热| www.com五月天| 色色色综合色| 中文字幕精品推荐免费在线观| 99热啪啪| 婷婷五月亚洲一本在线丁香| 色婷婷综合网| 激情av网| 丁香月五月天婷婷久久| 久热免费视频| 久久97久久99久久综合欧美| WWW.久久久久久久| 日本在线噜噜| 思思热视频在线观看| 日本色超碰| 激情无码五月天| 可以看的av网站| 中字幕视频在线永久在线观看免费| 超碰伊人碰婷婷五月| 成人婷婷五月天| 色狠狠综合网| 亚洲成人AV电影网| 国产成人VA| 爽极品色| 伊人久热91| 五月天播播综合| 九九这里是免费的视频5| 五月婷婷综合激情小说| 操操操操操操婷婷五月天| 色五月激情五月天| 色婷婷丁香花五月天| 五月天啪啪| 99综合网| 国产女生爱爱AA| 丁香六月av| 99热在线只有精品| 久久精品91视频| 婷婷五月天激情网站| 五月综合久久| 久久久WWW| 激情婷婷五月天| 91操女| 99热99这里有免费的精品| 色色色热热热| 成人视屏在线观看| 热久精品| 日本高清不卡免费一区二区三区| 婷婷丁香五月激情中文字幕版| 夜夜干 夜夜操| 欧美视频五区| 99网99热| 伊人大香蕉综合在线| 五月婷婷丁香色播网| 亚洲亚洲人成综合网络| 99热这里在线精品| 亚洲激情AV| 99热综合在线| 日韩一级网站| 97人操| 五月天.com| www99精品亚| 无月播播激情在线观看视频| 国产一二区爆乳_1国产日韩一区二区三-成人AV | 操97免费超级视频| 五月丁香激情综合网| AV六月丁香| 亚洲热久久| 一级韩国产精品毛| www激情com| 欧美日韩一区二区三区四区| 欧洲免费视频色| www.99riav99| 五月天激情视频网站| 五月天社区| 婷婷五月天黄色| 噜噜干日本| 亚洲av网站| 欧美色图天堂网| 久久女婷| 久久激情综合| 99这里的视频都是精品| 五月丁香色婷婷| 婷婷天天舔| 熟女少妇内射日韩亚洲| 精品综合五月| 欧美A A A A A| 婷婷五月天欧美| 人人搡人人| 成人一级片| 九九黄色网| 大香蕉九九| 夜夜做天天爽| 色呦呦在线| 夜夜夜夜夜骑撸| 日韩AV在线免费观看| 天堂中文国产| 五月开心婷婷极品激情| 色婷婷电影网| 五月天伊人日日噜影片AV| 中文不卡av| 天天日天天爽| 色性综合| 青草视频在线播放| 深爱激清网| 97亚洲婷婷| 26uuu日韩| 男人综合网| 91窝窝| 婷婷久久久久| 青青草a在线| 日韩AV无码影片| 婷婷六月天激情| 天天射综合网站| 日日夜夜干| 996日日爱| 热久国产| 久草热久草在线视频| 色婷婷狠狠干芒果TV| 久久99网址| 久久人妻精品| 天天做天天爱天天玩夜夜爽| 免费国产视频| 精品夜夜澡人妻无码AV| 亚洲bt丁香五月天婷婷激情小说| 97色天堂| 亚洲熟妇AV乱码在线观看| 婷婷五月天激情诱惑| 色玖玖综合网| 欧美性生交XXXXX无码小说| 综合网五月| Av狠狠色丁香婷| 久久日本wwww色| 久久久久久欧美精品se一二三四| 5月婷婷激情6月| 婷婷玖玖五月天| 女人高潮内射99精品| www.99热这里精品| 97色色色色色色色| 99啪视频在线观看| 久久久免费精彩视频| 日韩在线五月天婷婷| 国产激情AV| 久久免费高| 男女99免费视频| 天天色综合综合| 超碰AV在线| 久久久久九九九九视屏小说88| 91超级碰碰| 亚洲AV色婷婷人禽五月天| 丁香五月婷婷啪啪| 热久久婷婷| 久久怡红院| 五月综合丁香婷婷| 色情免费视频播放| www.激情| 中文字幕+中文在线| 日本不卡高字幕在线2019| 超碰免费大香蕉| 色婷亚洲| 五月天激情网图片 - 百度| 97丁香五月| 爱操天堂| 国产精品色色| 大香蕉婷婷丁香天堂AV| 热热久久99| 五月天天天开心激情网| 久久人人超| www.91AV.COM| 成人.在线日韩| 另类激情中文| 天天爽天天| 九九无码视屏| 婷婷丁香五另类网站| 天天肏夜夜肏| 欧美日韩成人在线网| 色婷插| 另类少妇人与禽zOZZ0性伦| 超碰免费人妻| www.久热| 深爱激情网综合| 97色伦另类图片小说视频 | 99爱视频| 四色AVwww| www.五月激情红色| 丁香色六月婷婷| 在线播放成人网站| 欧美超级视频97| 久久女人九九| 亚洲AV无码成人电影| 日本人妻伦在线中文字幕| 九九热只有精品| www.婷婷亚洲基地| 色色热| 婷婷丁香五月色| 丁香五月天在线| 五月天婷婷五月| 色情播放| 日日干日日s| 久久er+| 精品久久婷婷五月天| 色情婷婷| 狠狠色婷婷7777久| 久久久www| 欧美六月| 精品婷婷| 五月天大香蕉| 久久曰曰| 婷婷导航| 天天做天天爱天天爽夜夜揉| 91狠狠综合久久久久久| 99久久久久| 香蕉久久国产AV一区二区| 五月婷在线观看| 超碰女人天堂| 久久婷婷影院| 色色自拍视频网站| 国语对白性爱视频播放| 99在线免费视| 色五月婷婷、老熟女| 色综合xx| 另类国产综合| 在热视频精品| 无码人妻一区| 欧美狠狠色| AV网站免费在线| 99色在线视频| 激情五月丁香五月| 免费观看18视频网站| 欧美性生交XXXXX无码小说| 亚洲精品国产A久久久久久| se色婷婷视频| 开心五月婷婷伊人| 伊人热婷婷| 91丨九色丨白浆秘| 色婷婷基地| 琪琪理论片| 婷婷丁香五月天小说| 婷婷六月五月天综合| 五月丁香婷婷综合视频| AV成人在线播放| 欧美日综合| 五月婷婷丁香| 骚逼视频一区2区| 四射综合网| 午夜激情综合| 亚洲综合激| 麻豆五月丁香婷婷| 亚洲色视频| 婷婷射丁香| 五月丁香婷婷啪啪| 激情人妻蜜夜系列区| 色站9/| 99色天堂| 午夜九九电影| 五月丁香婷婷基地| 亚洲超碰在线| 成人做爰高潮A片免费视频| 97爱艹婷婷开心丁香激情综合| 日本少妇AA一级特黄大片| 狠狠色噜噜狠狠狠狠综合| ss五月天激情| 天天色激情| 丁香婷婷六月天| 噼里啪啦在线观看免费完整版视频| 五月丁香亭亭激情操逼网| 亚洲天堂无码| 激情网五夜婷婷| 日日狠狠久久偷偷四色综合免费| 婷婷操超碰| 成人做爰A片免费看视频| 九九在线91| 大香蕉av在线| 婷婷射图五月天| 久久精品4| 久久久婷婷五月天| 丁香五月六月综合激情| 婷婷六月丁香色| 夜夜爽天天爽| 国产亚洲精品AAAAAAA片| 大香蕉75线| 青青草a在线| 99色热视频在线| 亚洲色久| 日本乱论99| 激情五月丁香色婷婷| 在线观看婷婷5月| 日本乱子人伦在线视频| 婷婷五月丁香欧洲| 黄涩毛片| 九月丁香亭亭| 日韩精品呦呦va| 99综合视频在线| 五月天激情图片| 另类小说五月天| 大香av| 五月丁香欧美综合免费视频| 9久精品视频| 97se在线视频| 秋霞三级影视资源| 天天综合五月| 亚洲超碰青涩| 日韩免费乱轮网站| 九九在线精点品| 国产AV熟妇人震精品一品二区 | 九九人人精品| 99国产99| 色欲Av五月天| 色天堂在线| 97亚洲精品| 少妇日麻屄| 婷婷激情九月| 91久久精品视频| 五月天小说激情| 五月停亭六月,六月停亭的英语| 99视频日韩| 六月丁香深深爱| 激情五月丁香五月| www.综合久久.com| 亚洲激情精品| 老师的粉嫩小又紧水又多A片视频 粉嫩AV久久一区二区三区 | 夜夜爱网站| 久久久久久五月天| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 第四色大香蕉| 麻豆WWWCOM内射软件| 久99久视频| 久久小视频| 碰人人97| 五月婷婷综合色啪首页| 婷婷欧美| 狠狠丁香| 成人网在线视频| 99ri国产精品| 亚洲色色精品| 国产精品久久久久久妇女6080| 日本老女人黄页在线播放| www.日本91| 成人网页在线观看| 午夜激情五月天| 91丨九色丨大屁股| 99噜噜噜| 五月天天天色| 色噜噜丁香| 国产精品久久在线观看技巧| 五月丁香影院| 婷婷五月天AV在| 亚洲热久久| 视频一区二区在线| 色综合久久天天综合网 | 另类的婷婷| 99久久综合| 大香蕉五月天| 色婷久久| 亚洲午夜AV| 色色色图| 99re66热这里只有精品| 色色激情| 九九国产精视频| 五月天综合久久| 五月天婷婷黄色视频| 综合网天天| 狠狠色婷婷在线| 天天天天干| 五月丁香婷色| 国自产拍偷拍精品啪啪一区二区| 狠狠干总合| 国产黄色在线观看| 99热这里只有精品热| 久月久在线视频| 激情六月一二| 一区中文字幕电影| 五月丁香亭亭| 97干欧美| 精品人妻一区二区三区四区不卡在| 九九Av| 亚洲精品视频在线播放| sisi热国产| 婷婷97色| 天天日天天草| 亚洲激情综| 色色com| 少妇激情五月婷婷| 激情性爱五月天网页| 九九激情视频| 91婷婷丁香五月| 日本五月婷婷| 丁香六月天婷婷色| 99久久天堂婷婷| 丁香五月欧美| 五月婷色色| 99精品视频在线观看| 青青草视频福利| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 国产精品视频免费看| 婷婷六月天天| 99色这里| 丁香婷婷AV| 国产欧美va| 国产成人av在线| 国产又粗又大又爽又黄| 天天日夜夜爽。| 天堂爱啪啪| 99久久9| 丁香五月婷婷俺也要去| 婷婷五月天AV在线| 99ri在线视频| 天天天天爽爽天干| 九洲一级A片| 99国产精品白浆在线观看免费| 99热这里只有精品18| 91激情五月开心| 日本婷婷色日| z色五月播播久久| 99久久久99久久91熟女| 久久丁香| 婷婷五月色情天| 五月婷婷综合激情| 五月停性愛| 中文字幕在线免费| 色久五月| 99伊人性爱在线影院| 丁香五月影院| 99这里只有精品|v| 激情六| 91热久88| 99热网站| 丁香六月无码播放| 丁香五月香蕉在线| 色吊丝av中文字幕| 久久99免费视频| 婷婷五月丁香第四色超碰在线|