免费国产精品自在自线-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
返回資訊列表
五他月天啪啪啪| 深爱丁香激情| 久久人妻超碰一区| 五月激情影视| 激情久久久久久久久久久| a色色片| 日本猛少妇色XXXXX猛叫| 天天狠狠色综合| 99精品人人| 色99久草在线| 67久久| 老司机伊人| 人妻VideOssS人妻高清| 日本九九热| 91久久久久久久久18| 五月丁香婷婷五月色| 91色在线/日韩| 久久免费婷婷视频| 久热这里只有精品在线| 狠狠五月天激情| 婷婷香香五月| 五月丁香婷婷无码中文| 亚洲天堂爱爱| 久久性爱视频| 丁香九月婷婷| 99色这里| 99极品视频| 欧美图片丁香五月天| 激情综合五月丁香六月婷婷| 色五月综合网站| 亚洲精品V天堂中文字幕| 久久综合中文| 99激情视频| 亚洲人人操| www开心激情网| 五月久久五月激情| 色婷婷内射| 婷婷综合网| aaa9区免费在线观看| 伊人热在线大香蕉| 97婷婷五月激情六月丁香伊人| 免费无码毛片一区二区A片| 99久久极情精品一区| 久久色五月天| 99re思思久久| 久久人人做人人妻人人玩精品va| 九九99偷拍视频| 六月婷婷天堂| 中文字幕激情综合| 99视频超级精品| 亚洲婷婷在线播放十月| 色小说婷婷五月天天天| 色婷婷社区| 欧美日本一区二区三区| 激情综合网激情五月天| 日韩1区2区| 99ri国产| 中国女人内射6XXXXX| 国产成人精品一区二三区熟女在线| 日日夜夜狠狠| 久久久精品99| 亭亭丁香aV| 丁香婷婷综合精品六月初| www.激情五月天。com| 国产91视频| 狠狠色噜噜狠狠色噜噜噜999| site:901-07.com| 天天五月香欧美| 综合五月草| 婷婷丁香人妻| 九九大香蕉黄色影院| 亚洲无线视频| 99免费超碰在线| 禁片二区| wwwss在线观看| 99免费视频久久| 五月激情另类| 婷婷少妇激情| 182tv992tv人之初午夜免费观看| 婷婷午夜激情| 啪啪六月婷婷| 五月丁香在线| 99干日本| 丁香六月亭亭久久综合| 激情深爱五月天| 日本强伦片中文字幕免费看| 国产9色在线/日韩| 丁香色五月婷婷| 9色在线视频| 丰满少妇猛烈A片免费看观看| 伊人婷婷福利网| 综合色视频| 丁香婷婷基地| 激情综合五月婷婷丁香| www.金莲av| 97精品自拍视频| 九九综合久久| 天天干,天天日| 色婷婷小说网| 亚洲成人av在线播放| 五月丁香狠狠爱| 99热这里有精品24| 色婷婷狠狠| 亚洲免费av观看| 激情丁香婷婷六月天| 99热只有这里才是精品| 婷婷五月影院| 色婷婷五月天av在线| 99国产这里只有精品| 网色99| 欧美成人在线观看| 色国产五月| 91色在线 | 日韩| 九九在线视频| 五月丁香综合激情在线观看| 五月婷婷丁香大陆免费| 超级碰碰视频无码| 色天天综合| 天天干,夜夜爽| 激情碰碰碰| 五月婷婷五月天激情视频| 狠狠操狠狠| 苗黎美女四级成人版一级二级毛片| 色综合中文色综合网| 五月天婷婷成人资源站| 少妇水多A片太爽了| 久久久宗合| 激情婷婷啪啪| 成人 九九九九| 久久在线人妻| 九九色情网五月天| 亚洲综合激情五月久久| 日亚二欧美| 热99这就是精品视频| 日日影院 | 99免费综合网| 久久久18| 婷丁香五月天| 99A片| 丁香六月av| 另类激情综合| 久久99最新| 五月丁香色情| 丁香亭亭久久| 99在线视频网址在线观看| 丁香婷婷免费| AV操一操| 综合激情视频| 亚洲综合婷婷五月| 久久激情网| 日本三级大片| 亚洲精品久久久久AV无码| 人人干天天舔| av网站不卡在线| 青青草深爱激情网| 婷婷六月综合激情| 九九热婷婷| 99成人| 91 九色 入口| 婷婷99| 激情久久久| 99视频自拍| 日本久久婷| 五月丁香花视频| 婷婷免费无马| 99re在线播放| 国产玖玖资源| 欧美日韩91| 天天日天天色| 五月婷婷精品无在线| 色五月综合网站| 99免费视频网| 伊人久久五月天| 操99| 婷婷伊人网| 黄网免费看| 激情九月综合| 北条麻妃伊人| 五月天婷婷社区| 日日射天天射| 婷婷激情视频| AA片在线观看视频在线播放| 99综合自拍| 人妻AV在线| 欧美搡BBBBB摔BBBBB| 开心综合激情综合| 久99久视频| 国产超碰在线| 婷婷久久综| 亚洲色爽| 91色综合网| 五月婷丁香| 婷婷五月天天aV| 99亚洲视频| 五月综合视频| 激情爱爱网站| 激情五月狠狠| 26uuuu精品一区二区| 变天就操逼婷婷五月| 婷婷精品免费久久| 色五月丁香网| 五月婷婷m| 99久久www| 99热18| 五月播播| 伦99热| 午夜日韩久久久网站| 婷婷午夜| 五月天综合激情网| 色99热| 99热只有精品综合| 91在线日| 97婷婷丁香| 在线观看免费人成视频无码| 丁香婷婷六月| 99ri视频| 国产成人av在线播放| 日本成人小说婷婷六月| 天干干夜夜操| 婷婷五月天AV| 超碰成人在线观看| 日韩一级A片黄色| 激情AV综合| 大香蕉久艹| 婷婷五月天综合色| 五月婷婷福利| 天天操天天日天天爽| 伊人狠狠丁香婷婷综合尤物| 操逼六区| 色5月婷婷色| 五月婷性爱| 欧美电影在线播放| 69精品人人人人| 九月丁香| 99热首页| 免费精品99| 色爱五月天| 丁香五月婷婷网| 婷婷五月天亚洲丁香| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 一区二区无码视频| 真实的国产乱XXXX在线91| 99热这里只有精品在线| 色情五月婷婷| 国产无套精品一区二区| 天天日天天肏天天奸| 色狠狠综合| caop在线| 狠狠干狠狠干| 亚洲视频在线观看| 色婷婷性爱网| 五月天大香蕉视频| 一起肏在线视频| av电影在线播放| 色婷婷五月天av在线| 99热免费| 精品一区二区三区三区| 丁香六月激情四射| 婷婷五月激情的图片| 在线成人网站| 天天爱天天做天天舔| 天天日日人| 日日噜狠狠色综| 九九日本视频| 99热99这里有免费的精品| 久久A热| 伊人日日干| 婷婷综合五月激情| 丁香五月综合网亚洲综合欧美狠狠| 久久一二三视频| 人人操A| 淫荡综合网| 天天爽天天做| 99热欧美| 久久加勤综合| BT综合在线视频观看| 日韩成人网址| 热久久视频99| 99久超碰| 国产3p露脸普通话对白| 超碰爱爱爱| 色一情一乱一乱一区91| 丁香婷婷五月六月天| 深夜A片| 人人摸人人| 久久婷婷网站| 久久久国产精品黄毛片| 91色色色18| 丁香六月婷婷开心| 日本va欧美va国产激情| 激情综合网五月天| 五月婷婷基地| 99热乎| 夜夜天天天天天干天天爽| 婷婷五月天欧美图片在线播放电驴| 五月天色丁香| JAPANRCEP老熟妇乱子伦视频| 超碰97在线观看免费| 午夜成人在线免费视频| 亚州视频九九99| 老司机日日夜夜青草| 日韩成人av在线| 无遮挡国产高潮视频免费观看 | 97在线观视频免费观看| 婷婷久久丁香五月| 精品A√| 91九色国产| 97超碰婷婷五月天| 婷婷大香蕉| www色五月天| 99热老司机| 97婷婷五月| 色五月丁香五月| 99热免费18| 人人草公开操| 综合久| 玖玖@三月天天丁香婷婷| 激情综合网五月在线播放| 国产精品热搜丁香五月婷婷| 香蕉AV777XXX色综合一区| 日韩在线观看亚洲| 九九热只有精品| 这里只有精品视频免费在线观看| 黑人熟妇一区二区三区| 婷婷五月天成人小说| 丁香六月激情| 欧美性二区| 激情五月丁香六月综合AVXXXX| 亚洲亚洲人成综合网络| 激情五月天黄色小说| 人妻精品一区二区三区| 999九九九久久久99HD| 婷婷爱综合| 91色色色| 伊人久久艹| 99性爱视频| 91主播在线| 黄色99网| 国产麻豆视频| 九九视频精品视频精品| www久久久久久久久久久| 久久激情视频| 99久久精彩视频。| 欧美色色色| 久久激情五月天| 五月天婷婷婷| 99精品偷拍视频| 激情小说之五月| 狠狠狠狠狠狠| 丁香婷婷久久激情| 日韩人妻白浆视频系列| 人人视频色| 三级黄色大片视频| 五月天基地| 欧美综合激情| 99综合激情久久精品久久| 青草视频在线观看视频| 天天天添天天操| 色婷婷成人做爰A片免费看网站| 精品九九在线观看视频| 婷婷五月花| 开心婷婷五月天电影院| 狠狠色色色| 伊人婷婷色激情丁香| 超碰成人黄色网| 少妇口诉沐足视频播放器网址| 国精产品一区一区三区免费视频| 热99re| 99久久99综合| 婷婷丁香色五月| 噜噜五月天综合| 综合激情站| 日韩淑女人妻luan伦激情精品一区二 | 插少妇综合网| 久久中国毛毛片爱久久| 超碰免费人妻| se色99| 中文字幕在线aⅴ免费观看| 人妻VideOssS人妻| 偷拍91九色| √天堂资源在线人妻熟女| 色色丁香五月天| 色99视| 亚洲深喉AV| 五月婷婷自拍| 婷婷五月天丁香| 五月婷婷激情| www.婷婷五月| 婷婷六月丁香综合| 欧美色色日韩| 26uuu欧美| 婷婷五月天色综合| AAA久久| 国精产品一区一区三区免费视频| 五月婷婷丁香婷婷| 婷婷丁香五月天在线视频| 99精品久久久久久| 香蕉婷婷| 六月丁香成人网| 婷婷五月天综合AV| 免费观看全黄做爰的视频| 婷婷精品综合| 欧美激情 日韩无码 婷婷 五月天| 亚洲AV成人在线观看| 久草狼人| 婷婷六月色播| 婷婷色影音天| 九九久久99精品免费观看www| 丁香五月在线伊人| 激情五月综合第一页| 久久99综合| 婷婷久久综合久色| 五月激情婷婷开心五月| 91色综合网| 免费无码毛片一区二区A片| 五月丁香成人网| 五月天六月天| 大香蕉婷婷| 色约约视频一区二区三区四区五区 | 亚洲激情免费视频| 99r久久这里只有精品| 丁香五月久久社区| 激情涩播| 成人做爰高潮A片免费视频| 另类图片五月天| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 色999亚洲人成色| 凹凸操Av| 亭亭社区五月天| 五月丁香激情啪啪| 97热精品| 国产免费av在线| 激情婷婷色五月| 久久色在线视频| 欧美精品A片一区在线观看| 丁香激情网| 超碰在线人人| 日韩久久色| 亚洲五月色| 千人斩操逼| 色婷婷五月天av在线| 丁香五月天天| www.久9| 婷婷五月天免费99| 久久婷婷丁香花综合网| 97超碰,人人舔,人人操,人人摸 | 色婷婷黄色网络| 大香蕉狠狠爱主页| 婷婷丁香五月激情密臀av| 97人人妻人人艹| 国产精品99久久久久久久女警| 国产亚洲在线观看| 五月天激情综合| 色欲天天综合| 91偷拍视频| 少妇人妻人伦A片| 夜夜爱网站| 九九热经典视频在线观看| 五月天激情小说婷婷基地| 99热99免费| 丁香五月成人论坛| 午夜福利8055| 中文字幕高清av| 亚洲AV日韩在线观看| 五月综合激情久久| 99玖玖视频| 91碰免费视频| 日本全黄一级999| 97偷拍在线视频| 国内9l视频自拍老熟女九色| 噜噜五月天综合| 五月天停停日日| 夜夜躁婷婷AV| 天堂A∨在线| 香蕉综合网| 婷激情五月天视频导航| 丁香五月天婷婷久久综合| 国产精品国产VA片国产| 中文乱子伦视频| 日日操夜夜爽| 丰满人妻一区二区三区| 亚洲深喉aV| 国产黄色大片| 另类激情综合| 97深爱伊人综合| 久久人妻高清中文| 五月激情综合网| 一起草AV| H亚洲| 伊人在线视频| 激情涩播| 欧美色宗和激情| 丁香亭亭久久| 日韩爱操视频| 99久久极情精品一区| 99久热| 亚洲岛国电影| 综合大香蕉| 久草五月天电影网| 天天射影院| 99超级碰免费视频| 色婷婷女优有码五月亭| wuyuedingxiang99| 色婷狠狠| 4399无码视频| 九九五月天| WWW.桔色成人.COM| www狠狠| 97夫妻超碰| 欧洲精品爱爱| 婷婷五月色丁香在线看| 色综合色五月| 亚洲成人丁香花| 伊人久久99| 天天综合网亚洲综合网| 天天天天天天操| 香港九九六区八区99| 婷婷精品在线| 婷婷五月天综合在线| 丁香网站| 色婷| 色五月天成人| 久久caop| 久久久思思热| 99ri国产| 操日本三片99| 99热亚洲精品66| 另类专区在线观看| 97香蕉碰碰人妻国产欧美| 翔田千里无码| 色色五月天婷婷| 激情99| 婷婷五月激情视频在线| 国产精产国品一二三在观看 | 色色热| 婷婷五月天奸女| 国产婷婷五月天| 亚洲综合在线视频| 丁香五月婷婷狠狠色| 日本婷婷色日| 五月婷综合| 黄色99网| 风流少妇A片一区二区蜜桃| 伊人婷婷大香蕉| 婷婷五月天堂| 97超级碰碰碰久久久| 美女激情婷婷| 岛国在线观看91| yazhou seshipin| 欧美日韩999| 丁香五月婷婷激情尤物| 色色色在线观看| 亚洲无码AV片| 五月天国产婷婷精品视频在线| 九九九激情综合| 99色色网站| 九热视频| 久热伊人91| 五月天伊人日日噜影片AV| 大香蕉伊人久久| 久久久.COM| 欧美婷婷精品激情| 久久亭亭电影| 99热思思| 日本久草福利| 色色色色综合网| 亚卅毛片| 亚洲六月色婷婷| 五月综合丁香婷婷| 99热综合网| 九伊人网| 国产成人AV在线| 玖玖婷婷婷丁香五月| 五月天久久91| 色在线99| 久久9精品| 色五月婷婷色| 婷婷99狠狠| 7777久久亚洲中文字幕| 99热精品在线观看| 另类伊人婷婷| 五月天伊人| jiujiu无码五区| 99热这里| 五月天精品视频| 狠狠综合久久综合| 久99视频在线观看| 三年高清大片免费观看国语| 亚洲精99| 国产免费一区二区三州老师F1……| 深爱激情五月天婷婷网| 婷婷久久18| 99ri国产在线| 六月色狠狠色| ...婷婷五月综合不卡,国产在线手机| www,超碰| 夜夜人妻五月天| 少妇人妻偷人精品无码视频新浪| 五月丁香综合在线| 日本久热| 国产精品久久久久久妇女6080| 亚洲六月婷| 丁香花五月天婷婷成人社区 | 噜噜色com| 五月丁香久久久久| 国自产拍偷拍精品啪啪一区二区| 亚洲五月天婷婷综合| 九九色院| 97天堂| 五月花在线观看视频| 中文字幕九九九九| 欧洲电影在线观看免费版英语版| 久久久无码精品成人A片小说| 91狠狠综合久久| 伊人婷婷99热精品| 五月婷六月综合在线观看| 亚洲亚洲人成综合网络| 2020日日干| 五月婷婷 欧美| 激情五月婷色| 久久久97| www.99日本| 艹| 九艹在线| 九月停停| www.婷婷六月天| 久久人妻www| 夜夜爽天天| 日本大逼91| 噼里啪啦完整版中文在线观看| 丁香六月婷婷综合欧美| 婷婷免费精品视频| 欧美色99| 九 九九九AV| 色五月婷婷五月天| 这里只有精品久久| 五月激情基地| 五月亚洲激情| 久久激情综合| 久热99热| 99干在线视频| 欧美精品XXXXBBBB| 五月天播播| 六月婷婷五月丁香| 天天摸色吧天天摸色吧| 亚洲色欲欧美一区二区三区| 天天开心天天色| 丁香97综合| 美女五月天| 丁香五月天婷婷久久综合| 久久人人九九| 色色爽爽天天| 欧美在线视频免费播放| 天天色2017| 思思久久99热只有频精品66| 六月婷婷色综合| 丁香伊人网| 色婷婷狠狠18| 亚洲综合新99视频| 亚洲丁香五月天在线视频| 欧美婷婷丁香五月社区| 99在线热| 狠狠色狠狠| 8区视频在线| 丁香玖玖| 色综合香蕉| 伊人综合色干| 久久婷综合网| 五月丁香操婷逼| 日本3级片一区2区| 丁香五月最新地址| 超级碰碰碰碰视频| 婷婷爱五月| 亚洲综合一区二区| 97干视频在线| 99久久99久久综合| 久久综合丁香五月| 色综合久久44| www.五月天婷婷.com| 丁香五月激情宗合| 亚洲 在线 性爱 | WWW·天天操·视频?| 狠狠爱综合网| 99热欧美在线观看| 色色丁香五月婷婷| 天天干天天操天天干天天操天天干天天操| 插插五月天| 色婷婷色情| 狠狠色婷婷六月激情网| 丁香六月婷婷综合在线| 婷婷丁香激情综合色情| 五月丁香在线| 91丨九色丨国产打屁股| 大香蕉久久| A片试看120分钟做受图片| 91操人视频| 曰韩少妇内射免费播放| 日本三级99人妇网站| 久xxxx| 五月丁香激情四射综合| eeuus五月婷| 天天日夜夜夜操操操操| 色播五月婷婷| 大香网伊人久久综合| 99热精品在线播放| 色在线免费观看| 国精产品一区二区三区| 六月婷婷深深爱| 99只有这里是精品| 99久精品视频| 久操热线| 少妇被下春药玩弄A片| 日韩无码人妻一区二区| 99色激| 丁香婷婷在线| 亚洲成人影视在线观看| 久久人妻熟女一区二区| 国产精品成人网站| 天天操夜夜夜夜爽| www99热| 色色色欧美| 婷婷五月天久草在线| 一起草av在线观看| 色婷婷五月天激情久久| 狠狠搞狠狠操| 国产片XXXXA片国语对白| 中文在线成人| 热99这里只有精品视频| 67194成I人在线观看线路1| 六月丁香婷| 日本毛片内射| 五月天激情网址| 色五月综合在线| AAA级久久久精品| 久久永久视频| 丁香月六月| 裸体做A爰片毛片A片免费| 美腿丝袜AV天堂网| 无码中文一区二区三区| 在线成人网址| 玖玖九九9999在线观看视频精品| 思思99精品视频在线观看| 色五月av| 婷婷色狠狠| 国产VA播放| 色婷婷www| 五月丁香狠狠爱婷婷综合| 人妻内射麻豆视频| 色五月丁香五月| 人人操碰| 亚洲性爱区无码区| 91综合在线| 激情四射五月天| 色小说五月天| 色99久草在线| 青青草护士中出内射-欧美电影在线天堂新版 | 久久久久综合激动五月天| 欧美日韩成人在线网站| 看片视频在线免费日产在线看| 婷婷激情鹿城五月天| 色色日本| 五月天久久久| 狼人婷婷久久| 另类激情码| 热99热9| 成人五月丁香花| 梁铮版蜘蛛女在线观看| 丁香五月成人| 婷婷爱爱蜜臀天天操| 久草热在线视频| 婷婷综合久久综合| 五月婷婷六月丁香在线视频| 欧美久久一级内射wwwwww.| 丁香五月色综合色播五月| 在线婷婷| 婷婷日韩| 激情五月色婷婷| 真实熟女-91九色| 五月婷六月婷婷| 婷婷色色网站| 久草xx性爱视频| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 91九色精品女同系列| 欧美日韩成人在线观看| 亚洲AV无码成人电影| 五月色丁香视频精品| 中文字幕一色哟哟哟哟| 婷婷丁香五月天在线| 久久婷婷五月丁香蜜桃网| 久久人妻在线| 91色综合久久| 欧美色婷婷| 另类 在线| 婷婷五月综合在线| 这里有精品99| 五月日韩中文字幕| 激情宗合网激情五月天| 亚洲成Av人片乱码色第1集| 激情小说婷婷| 99成人网一区| 欧美日韩欧美| 午夜色丁香| 九九九九九九综合| 婷婷五月天色色| 99婷婷五月天| 婷婷丁香五月社区亚洲| 丁香六月久久| 五月婷婷综合激情| 亚洲欧洲中文日韩久久AV乱码| 深爱五月最新网址| 亚洲av无码精品色午夜| 99爱在线免费视频| 日韩AAA| 伊人狼人干| 婷婷五月免费视频| 97超碰人人操| 中文字幕免费高清电视剧| 色婷婷a三区麻| av在线观看网址| 操操碰| 亚洲色欲欧美一区二区三区| 日本不卡一区二区三区| 五月天伊人久久久久| 国产精品电影| 久热A片| 天堂五月婷婷| 五月开心婷婷| 色婷婷激情四射视频| 久久久人妻| 五月天狠狠网| 欧美群妇大交乱婬网| 亚洲精品第一国产综合亚AV| 97资源欧美日韩大香蕉超碰一区| 99这里只有免费的小视频在线观看| 激情综合五月丁香六月婷婷| 色三级色三级| 五月天综合影院| 色五月婷婷色| 五月天伊人久久| 激情综合一| 日本天天色| wwxx日本| 色欲久久久久久综合网综合网| 婷婷五月天在线观看| 91久久电影| 六月天六月婷| 久久99久久99久久99人受| 久久3级片| 色色激情五月天| 五月天开心网| 丁香五月婷婷在线视频| 久久九九爽| 色综久久久| 777影视理论片大全在线观看| 2025色婷婷| www.日韩艹| 婷婷综合五月天| 婷婷五月a| 99ER热精品视频| 色综合色色| 丁香婷婷91在线观看视频| 五月婷婷自拍| 色噜噜,噜噜色| 亚洲综合在线伊人婷| 色444综合网| 怎么样可以看免费的一级av| 日本99视频| 日本久久性| 六月丁香综合| 97韩国久久电影院| 久久99热这里| 九九热这里只有精品23| 日韩美女羞羞网站在线观看| 五月丁香婷婷色播无码| 韩国中文字幕91| 国产午夜精品一区二区三区嫩草| 色色丁香五月天| 色天堂A| 天天噜噜| 婷婷久久丁香| 色五开心五月五月深深爱| 色欲香综合网| 丁香婷婷五月天激情四射| www.maotanji.com| 五月婷婷中文字幕| 亚洲超碰中文字幕| 六月成人网| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 亚洲黄色网址| 五月天网址在线刘玥| 内射在线CHINESE| 日本高清久| 9|无码久久久久久| 婷婷五月激情综合| 99热伊人| 五月婷婷丁香五月| 任你艹| 热久久这里只有精品| 久久人妻久久| 色婷婷导航| 9久精品| 久久99热网| 成人 在线观看国产| 久久婷婷青青| av免费在线观看0| 9 1大香蕉| 大香蕉娱乐| 丁香伊人网| 人妻操日日| 99热爱爱干干日| 久久久思思热| 日本www五月婷婷| 亚洲性爱日韩无码| 婷婷五月天综合小说网| 开心激情站| AV在线大香蕉| 99精彩视频| av网址在线播放| 伊人五月天久久| 99色五月| 久久这里面只有精品视频| 激情欧美婷婷| 狠狠狠狠狠操| 免费观看的av| 一级黄色影片| 亚洲AV影片在线观看| 午夜丁香久久久久久| www久久久久久久97| 婷婷五月中文在线| 天天色综合网1| 激情都市丁香婷婷| 99热国产免费| 99色色视频| 97久久精品视频| 91色色色| 色婷婷五月综合在线| 超碰人人91| 色婷婷久久| 日韩无码性爱| 99热自拍| 在热视频精品| 久久婷婷五月综合| 大香蕉丁香五月| 婷婷激情五月| www.亭亭五月天| 色婷婷小说| 成人无码免费一区二区中文| 五月丁香久久久久| 色五月av伊人| 在线观看中文字幕亚洲| 最新无码专区| 玖玖婷婷五月| 天天爽天天透天天爱| 五月天丁香婷婷社区| 日本少妇裸体做爰高潮片| 国产精产国品一二三在观看| 欧美WW在线网| 五月丁香 久久久| 99热热这里只精品996小说| 五月婷婷六月丁香| 免费观看全黄做爰的视频 | 综合色99| 美女天天爽| 色综合五月天| 在线观看欧美| 五月天社区狠狠| 九色PORNY9l原创自拍| 丁香五月婷婷久久久| 综合激情啪啪| 天堂久久婷婷| 九色在线五月婷婷网址| 婷婷基地成人五月天| 伊人五月婷婷| 久草婷| 黄涩毛片| 五月天色播网| 激情六月丁香| 夜色.cnm| 婷婷综合五月色播| 日韩免费视频| 9久久精品| 激情99热| 婷婷色五月天色色| 色婷婷丁香五月综合| 国产精品涩涩涩视频网站| 丁香婷婷性爱| 99久久久久久www| 九一娱乐在线观看视频| 亚洲婷婷婷| AA丁香综合激情| 日韩婷婷| 99热国产| 日本婷久久| 美国十月色婷婷在线观看| 99爱在线| 女人天堂 AV| 人操综合| 久久婷婷欧美| 搡BBBB搡BBB搡18 | www.夜夜操.con| 久99| 色五月激情五月丁香五月婷婷啪啪综合| 香蕉狠狠爱视频| 色婷婷中文在线| 超碰国产在线观看| 五月天之色情综合网| 亚洲热久久| 国产在线自| 天天色99| 六月久久婷婷| 91无码视频| 熟女网站久久| 婷婷五月天黄色| 大香蕉AV在线| 日本99视频| 五五月丁香花激情综合网| 天天综合网站| 婷婷五月天va| 婷婷五月丁香综合网| 丁香五月 六月婷婷首页| AV在线不卡播放| 久久99色色| 噜噜五月天综合| 综合网啪| 91黄址| 99操视频| 婷婷97狠狠干| 一起草AV入口| 婷婷播5月| 狠狠久综合| 久久亚洲婷婷| 久操综合| 婷婷久久综合| 五月婷婷激情四月| 九月色婷婷综合亚洲| 天天天干夜夜夜操| 色婷婷九月| 婷婷丁香久久| 激情六月婷| 亚洲色色五月| 五月天亭亭俺也| 色色亚卅| 丁香香蕉婷婷| 丁香五月在线| 97成人在线视频| 超碰人人干| 色激情综合狠狠婷婷| 大色鬼综合| 丁香婷婷六月| 婷婷五月丁香超碰| 中文激情网| va亚洲中文在线| 人妻激情视频| 99这里只有精品| 国产偷人妻精品一区| 日本系列_4页_777FP| 亚洲V国产V欧美V久久久久久| 人人人舔人人人操人人人摸人人人97| 五月婷婷色播| 日韩AV免费电影在线播放| 婷婷五月丁香综合激情| 7月婷婷六月丁香| 婷婷成人基地| 婷婷五月丁香综合激情| 久久永久网址| 操操日韩| 91精品久久久久久综合五月天| 26uuu亚洲精品国产| 六月婷婷天天操夜夜爽视频| 九九婷婷激情综合网| 五月伊人网| 激情婷婷综合| 五月丁香花激情综合网| 欧美精品在线观看| 亚洲乱码w在线观看| 五月天五月色| 超碰AV在线| 操97在线观看| 96丁香六月婷婷蜜桃综合久久| 五月天四色房丁香亭亭| 天天开心婷婷丁香五月| 影音先锋91资源站| 免费看欧美成人A片无码| 99爽视频| 丁香五月无码| 99国产小视频2013| 五月天丁香久久| 五月丁香综缴情性爱| 91chinese在线| 99色在线视频| 玖玖视频福利| 国产熟女大叫受不了| 99精品久久久久久| 丁香五月天之婷婷影院| 欧美成人日韩| 亚洲天堂aaa| 五月婷婷六月爱| AV色五月婷婷| 色射影院| 色欲久久综合| 激情五月天视频| 99视频网| 婷婷五月天日逼| 色婷婷电影网| 久久综合久色欧美综合狠狠| 思思热在线观看| 五月婷婷基地| 亚洲婷婷激情综合激情999精品| 99日韩网站| 综合视频五月| 婷婷丁香六月五月天| 97色在线视频| 人人性久久| 最新日韩AV中文字幕| 五月婷婷av在线| 91在线操逼视频| 五月婷婷综合激情| 色五月综合网| 久9热| 婷婷综合久久| 五月天激情四射| 五月天狠狠| 亚洲aV写真天天综合网久久| 六月丁香婷婷在线波多| www。88热在线视频免费观看| 18av天堂| 色噜噜伊人| 五月激情啪啪| 亚洲激情AV| 东京热免费视频| 超碰成人电影| 色色婷婷五月| 久久五月天激情美女| 久草 天堂| 97碰在线视频| 狠狠舔| 狠狠色丁香五月婷巨| 天天开心婷婷丁香五月| 2050人人操免费工开爱| 九九综合视频在线观看| 欧美婷婷六月丁香综合色连续高潮抽搐| 婷婷的激情五月| 五月婷婷开心深| 手机看片日日做夜夜| va婷婷在线免费观看| www.人人操人人看人人想人人摸 人人人人操,COM | 婷婷五月天久久| 99热啪啪| 婷婷丁香五月综合| 激情五月婷| 日韩黄在免| 青青草99re| 青青日韩| AV九九| 五月色导航| 亚洲va欧美va国产综合久久久 | 激情六月综合| 日本丁香五月| 五月丁香花成人社区| 综合超碰熟| 激情五月色婷婷| 久久婷婷五月国产激情综合片| 五月的丁香六月的婷婷| 中出内射的人妻视频| 狠狠色狠狠操| 色色色9| 中文字幕日产A片在线看| 91狼友视频在线观看| 色情久久久| sS丁香五月婷婷| 2020日日干| 深爱五月月天| 伊人干练久| 九九热精品| 性爱综合网| 99热久久这里只有精品| 婷婷性爱五月天丁香网| 色婷操逼| 精品色色网| 婷婷五月天激情电影小说| 五月激情视频| 爱超碰性| www狠狠com| 99热这里只有在线播放| 99精色| 啪啪操超碰| 日韩砖区| 天天搞天天爽| 99久久久久| 免费91久久精品| 五月色网| 天色综合网站| 亚洲成人网站在线播放| 欧美性猛交XXXX乱大交极品| 色婷婷综合在线| 第二色AⅤ| 色色五月婷婷久久| 亚洲视频在线观看| 久久艹99| 亚洲五月情| 丁香五月Av| 中文字幕成人日韩| 热久久99视频| 天天肏在线观看| 超碰日韩人妻在线| 亚洲五月天,激情视频| 久色婷婷200| 99re思思热久久| 丁香婷婷综合喷| 丁香五月98| 中文激情网| 婷婷五月超碰| 婷婷色日本| 丁香五月婷婷基地| 日韩黄色影院| Xx色综合| 草一草avb| www.com任你艹| 国产五月天激情小说| 久久婷婷精品| 第四色网婷婷| 99热免费精品热久久66| 色热久| 婷婷色色欧美| 五月天 另类图片| 丁香五月婷婷色| 亚洲天堂99| 综合性爱网| 伊人影院久久网| 五月丁香综合啪啪対白| 九九综合| 婷婷五月天AV| 色婷婷五月天在线观看| 91在线人| 天堂AV在线看| 无码91中文字幕| 99热在线爱| 久久视频婷婷视频| 五月丁香六月婷婷成人| 五月天婷婷丁香社区| 丁香五月天久久| 精品人妻久久久| 国产成人精品亚洲线观看| 九九综合久久| 91丨九色丨东北熟女| AV在线中文| 五月丁香六月香香蕉| 婷婷五月丁香色综合| 这里只有精品在线视频在线观看| 成人性生活免费观看。| 只有精品视频在线观看| 亚洲综合激情五月久久| 九九伊人网| 五月激情六月丁香| 日本三级黄色大片| 五月丁香影院| 久久婷婷五月天| www.色婷婷.com| 婷婷五月花| 日本丁香五月| 亚州激情在线视频| 嫩草AV久久伊人妇女超级A| 99在线视频免费| AV大片在线播放| 亚洲激情网站| Caop在线|