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
返回資訊列表
99热这里是精品| 色婷青青| 亚洲综合干| 婷婷五月天小说| 99热情这里只有精品在线播放 | 国产免费一区二区三州老师F1F1……| 伊人婷婷色| 97操碰在线视频| 99久久综合| 深爱五月婷婷| 人人看人人要| 五月天婷婷情色| 色玖玖综合网| 五月综合激情图片 | 一本到不卡高清DVD| 日本美女天天日天天爽| 久久婷婷六月综合综合| 人人操人av| 久久蜜臀婷婷| 久久五月视频| 久热这里只有精品66| 五月丁香狠狠爱婷婷综合| 女人天堂 AV| 91性人人| 九九热精品| 久久婷婷六月综合资源| 五月丁香花激情啪啪网| 99热最新网址| 2020久久婷婷五月| 激情久久网| 九九热re99re6在线精品| 91欧美日韩综合| se99视频| 99久久玖玖| 欧美在线视频免费播放| 五月丁香婷婷色| 天天射综合网天天插| 超碰在线观看三级片| 日日爱激情| 五月狠狠| 少妇被下春药玩弄A片| 丁香五月激情月| 99精色| 久久午夜丁香| 丁香婷婷久久| 五月花综合视频| 久久香蕉丁香| 性生生活大片又黄又| 激情五月,激情综合网| 成人av在线网址| 99人人干| 五月婷婷在线观看黄| 国产韩日亚洲美州欧亚综合在线| 欧美日本99| 九九操操| 九九热99热| 亚洲小视频免费播放| 日日日日日| 五月丁香在线看| 99九九精品| 天天草女人| 五月综合激情网| 婷婷五月天777| 久久日九九| 婷婷六月天| 成年人看Va免费视频| 五月婷婷黄| 综合网啪啪| 久久九九在线视频| 草美女在线观看视频在线播放 | 色色色色色级无码| 狼友视频在线观看18| 色爽干| 五月天婷婷操逼视频| av在线免费网站 | 99色最新在线视频网站| 深爱五月婷婷开心中文字幕| 亚洲午夜视频| 五月丁香婷婷激情爱爱| 日本婷婷五月天| 中文在线视频久1| 夜夜骑操AV| www一起操在线观看| 国外亚洲成AV人片在线观看| 六月天婷婷| 天天日夜夜曹| 五月天六月婷婷电影| 丁香九月综合| 色情综合网| 激情丁香五月综合| www91色网站| 狠狠狠狠狠| 大香蕉网站,大香蕉综合| 国产在线另类五月婷婷| 五月人妻婷婷| 日本无va视频| 激情综合五月色在线| 超碰成人在线观看| 中文字幕av网站| 丁香五月婷婷基地| 五月丁香色情| www.日韩国产| 99性视频| 97干欧美| 三级三久久线久久99久目本WW| 丁香五月 无码| 777米奇影视第四色| 人妻中文在线| 久久久精品色| WWW,五月| 丁香色五月 97干| 欧美日韩成人一区二区| 国产97色在线 | 日韩| 色色哒五月婷婷六月丁香| 久这里只有精品| 中文字幕,综合,91| 99re在线视频| 丁香花婷婷五月天| 色婷六月| 色综合久久44| 天综合日日夜综合7799| 日韩美女羞羞网站在线观看| 丁香五月激情综合婷综| 99网址在线看| 91啪啪视频| 丁香激情四射| av久热| 射久久丁香五月| 国产日韩欧美| 9色91视频| 国产精品国产成人国产三级| 大香蕉久久视频久久视频| 国产精品久久久爽爽爽麻豆色哟哟| 99色热| 亚洲色网络| 丁香五月色| 久久婷婷成人综合色怡春院| 九九这里有精品| 五月婷无码| 超碰免费人妻| 成人无码精品1区2区3区免费看| 综合网亚洲| 色五月婷婷网| 六月丁香啪啪啪| 俺也去色| 91聚色综合网| 亚洲综合999| 丁香五月中文字幕| 欧美日韩91| 性日本激情| 色色综合成人网| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 婷婷五月丁香六月| caop在线视频| 伊人无码高清| 亚洲图色五月天| 4399欧美另类视频| 99re99在线看| 五月天·www·com| 九九免费精品| 91精品丝袜久久久久久| 搡BBBB搡BBB搡五十| 激情五月天久久| 色情成人五月天| 青青艹b| 97自拍99| 亚洲九区| 另类图片激情五月天| 99视频精品8| www.五月天社区| 婷婷五月天成人网| 婷婷久久五月天| 日本不卡一区二区三区| www...com黄在线观看| 欧美色色日韩| 97久久久| 日韩色色色99| 思思热久热| 99噜噜| 婷婷五月天在线观看| 亚洲亚洲人成综合网络| 婷婷激情五月视频| 五月色丁香综合| 丁香五月成人在线| 中文字幕 码精品视频网站| 色情综合网| 五月婷婷丁香五月| 婷婷丁香六月五月天| 日日夜夜爽爽| 色婷婷综合久久久久| 亚洲色99| 黄页免费一级视频懂色| 99热这里只有精品98| 亚洲综合狠狠艹| 成人网址在线观看| 精品欧美性爱超级爽| 色涩影院六月丁香| 五月婷婷无码专区| 九九精品免费| 99re免费在线视频| 欧美综合丁香网| 婷婷五月天激情小说| 色五月丁香五月| 五月色激情综合网| 午夜爱爱爱成人| 人人爱摸视频| www九九免费视频| 五月丁香花视频| site:hcxsz888.com| 人人操人人爱丁香五月| 91久久久久久久久18| 九九精品碰| 亚洲精品色色| 综合久久五月天| 中文字幕在线观看视频www| 久久涩视频| 色婷婷狠| 网站免费一站二站| 激情电影五月婷婷| 精品在线| 99自拍视频在线观看| 亚洲日韩一页精品发布| 激情综合五月丁香| 久久婷婷五月综合啪| 丁香五月天堂网| 97碰碰在线观看视频| 日本www五月婷婷| 色婷婷综合久久久久| 99热草草| 色播五月丁香综合| 91狠狠综合久久久久久| 丁香五月区| 婷婷色激情五月天| 五月天婷婷综合色| 五月婷免费视频久久久| 久久只有18视频| 色约约视频一区二区三区四区五区 | 99久久99视频只有精品| www久| 精品九九网| www.五月婷婷久久.com| 熟妇人妻中文字幕无码老熟妇| 九九五月天| 蜜桃人妻无码AV天堂三区| 丁香五月婷婷激情97| 五月天五月色婷婷综合| 激情五月天小说网| 在线观看熟女少妇| 亚洲色综合| 99操碰| 综合五月丁香六月婷婷| 久久人人九| 丁香午夜天| 成人免费120分钟啪啪| 91九色精品熟女内射| 另类激情五月在线视频欧美| 97五月综合网| 久久9热| 538任你爽视频不一样的| 深爱激情69热| 六月丁香啪| 天天色域综合网| 婷婷综合丁香| 婷婷五月天激情五月天深爱五月天| 丁香五月五月婷婷欧美大香蕉 | 五月天a婷婷伊人| 99色色| 九月婷婷激情| 欧洲不卡视频| 成人五月天综合网| 亚洲无码色| 都市激情久久| 日韩黄色中文字幕| av中文网站| 亚洲视频一区| 久久色情综合免费网站| 天天色综和网| 五月丁香六月综合情在线观看 | 婷婷五月丁香99| 绿色小导航AV| 91黄操| 激情黄色小说色五月| 天堂久久精品| 国产噜一噜天天噜| 综合色在线| 五月丁香六月综合激情网| 五月婷婷啪啪啪啪| 99九九玖玖| 色婷婷五月色| 天天干天天干天天干| 2023天天日夜夜爽| 99九九玖玖| 午夜免费试看| 亚洲AV日韩在线观看| 99视频这里有精品| 综合久久婷婷五月丁香| 激情五月第四色| 97操资源婷婷| 五月婷婷激情网| 色色色色热| 99热精品10| 中文字幕有多少字| 亚州操人在线视频| 婷婷久草| 天天噜日日噜综合无码| 玖玖国产视频一区| WWW色五月天| 噜噜狠狠色综无码久久合欧美| 亚洲精品在线视频| 婷婷之玖玖| 久久婷婷亚洲五月天| 五月丁香综合啪啪| 另类激情五月天| 色欲丁香| 蜜臀99久久精品久久久久| 亚洲激情五月| AV天堂婷婷五月天| 呦呦v线| 色。 婷婷婷| 金品在线视频99| 黄色激情久久| 久久久亚洲精品一区二区三区浴池| 六月丁香社区| 性五月激情| 一级片操逼视频| jiZZdr| 天天爽夜夜爽夜夜爽精品| 欧美成人AAA片一区国产精品| 69色色视频| 伊人久久大香线蕉av最新| 97色碰| 182无码| 成人短视频在线免费观看| 国产婷婷色五月| www99精品日韩| 99久在线精品99re5热视频| 激情五月天婷婷久久久久久久久久久| 超级碰碰一区| 激情六月天| 日日干天天| 五月天无码| 久久男人网婷婷| 婷婷五月色| 精品无码视频| 亚洲性爱干干| 激情综合网址| 色欲色香,www,com| 丁香五月社区| 日本三级中文字幕| 五月天俺去也| 色婷婷内射| 亚洲综合在线网站| 超碰人妻公开在线| 色综合天天综合成人网| 六月丁香五月婷婷| 色噜噜狠狠狠综合曰曰曰| 91色久| 丁香婷婷综合色五月激情国产基地| 9+1视频网址| 99热免费精品热久久66| 爆乳熟女一区二区三区爆乳| 久久久全国免费视频| 五月天激情亚洲| 欧美人妻一区二区| 丁香五月天激情小说| 中美日韩成人在线| 色级婷婷| 天堂二区| 六月丁花香啪啪激情欧美| 久久丁香| 综合网啪| 九九99久久| http://www.lingjunshare.com/| 丁香九月综合| 婷婷综合亚洲| 五月丁香中文婷婷中文| 日本操B视频在线观看| 思思久久精品| 天天插天天射| 婷婷天天婷婷天天澡| renre人人操国产超碰在线| 色五月天 丁香| 1024人妻| 99精品无码| 天天综合网91| 欧美久久网| 色久天| 婷婷五月天成人影片| 激情丁香久久| 亚洲视频a| 五月激情站| 伊人玖玖网| 99re热视频这里只精品5| 综合深爱五月| 亚洲激情精品| 深情五月天| 人人干AV| 天天色天天色天天色天天色天天色| 激情六月五月婷婷综合网| 桃色Av色哟哟| 五月婷丁香花| 人妻久久久久| 五月色情婷婷| anquye伊人| 天天操夜夜爽天天操| 亚洲区视频| 怡春院久操| 免费AV在线| 九色无码| 思思热久久艹| 色五月婷色彩免播放器| 六月亚洲婷婷6月中文字幕| 欧美A级网站| 五月天激情国产综合婷婷婷就去爱 | 99性视频| 色综合伊人网| 99人碰碰碰| 超碰99热| 久操操| 九九在线视频| 久久精品凹凸分类| 国产黄色大片| 激情久久久久久久久| 狼人狠狠操| 婷婷精品在线| 人人操Av| 另类图片婷婷五月天| 婷婷综合色播网| 岛国AV网| www.婷婷亚洲基地| 色色色综合| 婷婷激情五月| 五月激情综合网婷婷| 91久久18| 99人人干人人| 26UUU一区二区| 美女丁香五月天| 五月婷婷和六月| AV国产有码| 自拍盗摄 另类| 婷婷五月天小说| 9久久精品| 日本片日本片祼观看网站在线看中文版网页在线看| 99超超碰| 日本97在线| 91婷婷丁香五月天免费视频网站| 色天天久婷婷| 激情五月天 婷婷| 亚洲第一成人无码A片| 久久婷婷五月天激情四射| 丁香婷婷五月综合影院| 激情六月下句是什么| 婷婷深爱五月亚洲综合| 伊人在线视频| 色婷久久| 日本97人人| 婷婷色五月激情强奸四射| 99精品在线播放| 第四色婷婷最爱| 色婷婷色五月天| 成人五月天丁香| www超碰| 91碰免费视频| 99啪啪| 丁香五月婷婷成人网| 综合成人小说婷婷| 丁香六月激情综合| 99caobi| 亚洲综合色婷婷| 伊人干练久| 超碰人人99| 欧美色五月| 激情五月天情色| 99久精品视频| 五月天婷a在线| 午夜九九电影| 超碰在线超碰| 亚洲狠狠终合停停终合| 激情五月天视频| 久久久99精品| 79精品视频在线观看,| 色婷婷亚洲综合网站| 99综合视频一体| 99热亚洲精品66| 狠狠干夜夜干| 大香蕉75线| 26uuu视频欧美| 色五XX| 久久婷婷五月| 婷婷五月色图| 99日韩网站| 久久综合五月天| 日本久久极品| www,五月丁,com| 成人亚洲精品| 日韩久久欧亚| 深爱激情网婷婷| 久99久热| WWW.久久99| 五月丁香狠狠爱婷婷综合| 国产午夜精品一区二区| 蒲京久久无码视频| 影音先锋91在线资源站| 久久婷婷精品| 久久久久人妻| 丁香五月欧美婷婷| 天天干天天干天天干天天干天天干天天| 欧美色宗和激情| 日韩五月婷婷久久| 精品福利911| www.国产色| 亭亭五月基地在线| 久久人妻www| 极品人妻VIDEOSSS人妻| 亚洲色色在线| 深爱激情综合| 99热国产| 五月婷婷丁香综合| 日本久久性| 激情五月天伊人影院| 国产偷人爽久久久久久老妇APP| 亚洲成人网在线观看| 日日杆天天| 丁香五月亚洲综合| 日韩综合大黄| 激情内射人妻1区2区3区| 日韩婷婷五月| 99九九精品| 四川操逼站| 色五月婷婷成人视频| 色5月婷婷| 婷婷射图五月天| 开心婷婷五月| 9婷婷内射| 精品成人a v无码内射| 97色精品视频 | 五月色导航| 狠狠爱综合| 超碰av在线| 丁香五月情| www激情网站| 丁香五月天资源网| www.无码com| 四月丁香五月婷婷久久| 久久久久久久久久久月丁| 丁香五月成人av| 狠狠色丁香久久综合婷婷亚洲成人福利| 伊人天堂婷婷| 俺去啦综合网| 91碰免费视频| 26uuu欧美日本| 狠狠色丁香久久综合婷婷亚洲成人福利| 丁香婷婷成人在线播放| 婷婷五月日本| 天天干,天天日| 欧洲S级在线观看| 五月天婷婷爱| 色狠狠综合| 伊人激情影院| 丁香六月婷婷高清| av婷婷六月丁香社区在线观看| 丁香婷婷伊人| 99啪啪骑| 色婷婷中文在线| 91精品久久久久久| 欧美成人精品A片免费一区99| 亚洲综合网激情小说| 五月婷婷综合激情| 丁香五月天婷婷久久综合| 日本人妻A片成人免费看片| 婷婷在线视频| 久久精品A片777777| 色噜噜在线| 色婷婷狠狠18yy| 色婷婷婷婷| 高清av在线国产| 色综合九九| 婷激情五月天视频导航| 国产无套精品一区二区| 亚洲综合激情五月| 天天日夜夜欢| 丁香六月综合激情| 五月天久久综合婷婷丁香| 免费在线a| 五月婷婷激情性爱| 狠狠久久婷五月综合色| 伊人激情网| 99在线视频精品| 久久婷婷五月国产色综合激情| 日逼AV影音先锋男人资源站| 婷婷五月天成人网| 亚洲日本激情| 色噜婷婷| 好吊操这里只有精品| 97日本在线播放| 这里有精品| 激情五月深爱五月| 91fuliwang| 色婷婷亚洲| 色五月天综合| 天堂五月婷婷| 91碰碰碰| 久久久精品人妻| 五月婷婷六月丁香免费| 亚洲人成播放网站| 婷婷综合在线| 精品草原久久视频| 色婷婷视频| 天堂美国久久| 五月天综合婷婷| 色欲五月婷婷| 99re在线视频精品,这里只有精品18,| 中文字幕人妻一区二区| 色婷六月| 色婷婷欧美在线| 丁香九月激情在线视频| 天天爱天天做天天操| 2020夜夜操天天爽| 91精品久久久久久久久| 狠狠狠狠狠狠| 丁香五月成人在线| 久99久视频免费观看| 激情婷婷| 欧洲激情精品婷婷| 丁香五月婷婷丫| 天堂网啪啪| 99国产精品白浆在线观看免费| 99久在线精品99re5热视频| 丁香五月第九色| 超碰在线9| 91 影音先锋| 五月丁香婷婷综合网| 情婷婷五月天| 狠狠色性| 欧美日本VA| 97婷婷在线| 超极99精品| 五月天另类激情在线| 狠狠色综合网| 日日夜夜综合| 色综合色综合色综合高潮| 91人人网| 丁香综合久久| 97爱艹婷婷开心丁香激情综合| 激情综合综合综合| 日韩在线视频网站| 蜜臀99久久精品久久久久| AA片在线观看视频在线播放| 亭亭玉月丁香| 亚洲天堂爱爱| 99热免费| 99免费热视频在线| 丁香五月天成人| 五月天天天综合| 香蕉久久国产av一区二区| av操B网站| 国产成人精品一区二三区熟女在线| 国产无套精品一区二区| 99热免费精品| 天天做天天爽| 婷婷激情五月天激情| 涩五月丁香| 欧美久久五月婷婷| 天天日日人| 肏屄色播伊人97婷婷| www.99操.com| 婷婷色影音天| 久久草大香蕉| 五月天大香蕉| 亚洲一区二区无遮挡A片| 台湾佬天天日丁香婷婷五月天| 99人人干人人| 99人妻碰碰碰久久久久| 超碰97色| 自拍视频在线观看9| 激情综合文学| 超碰2021| 中文字幕欧美精品久久| 久热精彩视频98| 97人碰人操| 超碰国产在线播放| 牛牛澡牛牛爽| 亚洲日比视频| 丁香五月天日韩无码| 国内精品免费一区二区2009| 偷拍99在线视频观看| 影音先锋男人AV资源站| 1024久婷| 99热99| 99.N在线视频| 婷婷月综合| 91操片| 午夜丁香| site:hcxsz888.com| 五月天天天综合| 这里只有精品视频在线观看免费| 国产 A片 自拍| 色婷婷激情五月天丁香| 精品综合网在线| 婷婷五月激情综合网| 久久久香港| 婷婷伊人75| 99操久久| 狠狠色五月激情| 欧美天天干五月丁香| 五月天色婷婷视频| 一级操逼内射在线视频| 国产密乳av一区二区三区四区| 激情无码网| 激情色播| 国产精品a无线| 色无婷婷| 另类亚洲视频| 丁香六月激| 丁香六月婷婷高清| 亚洲va欧洲va国产va不卡| 日日夜夜干| 激情婷婷五月天| 亚洲亚洲人成综合网络| 激情婷婷在线| 激情亚洲婷婷| 久久久97| 五月天婷婷在线啪啪视频| 久久五月天激情视频| 密桃激情五月天综合网| 婷婷六月视频| 91丨九色丨熟女| 激情综合网五月婷婷| tingtingcaobi| 中文字幕网站在线观看| 天天操天天日天天爱| 九九在线免费观看| 九九热最新| 天天日综合网射| 五月情涩综合婷婷| www.99久| 综合福利网| 五月天天综合| 天天天天天操| 天天综合色丁香| 婷婷色色五月| 婷婷激情四射五月天| 婷婷99| 色综合日日| 色色五月天网站| 亚洲九N| 97丁香五月| 日韩狠狠色婷婷| 色五月婷婷一二| 深爱激情综合| 玖玖激情网| xxxx五月| 亚洲一区二区无遮挡A片| 欧美黑人巨大性生话| 欧美人人女女精品综合五月天| 亚洲成人在线在线| 婷婷射丁香| 九九久久视频| 色五月激情| 性爱五月婷| 五月丁色AV| 六九色综合婷婷五月天| 日本va欧美va国产激情| 亚洲AV无码成人电影| 日韩在线视频中文字幕| 国熟女视频| 婷婷玖玖五月天| 久久激情中文| 中文资源在线a | 操操操操操电影网| 99色婷婷| 色99免费视频中文| 日韩无码人妻一区二区三区综合| 久久丁香五月| 丁香五月婷婷欧美性爱| 亚洲永久四色| 色综合激情| 久久综合九九| yazhochengrenavwang| 中文不卡一二三区| 激情五月六月婷婷| 成人在线综合| wwwwww.色| 天天操夜夜操| 另类天堂| 天天色丁香| 亚洲AV日韩AV永久无码网站| 夜夜天天久久婷婷| 人人干av| 色七七九九| 天天狠狠干| 国产午夜精品AV一区二区麻豆| 五月婷在线| 欧洲一区二区| 欧美大道不卡| 婷婷五月天开心激情网| 亚洲精品一区中文字幕乱码| 99热99成人| 99热e| 91疯狂操操操操| 激情五月四色| 丁香五月婷婷欧美性爱| 五月婷婷久久激情| 九九热视频在线观看| 97干欧美| 天天肏高清在线| 久久久色情| 99热99热不卡| 伊人五月婷| 婷婷五月天视频小说| 丁香五月激情网| 9久热在线视频精品| av在线色五月丁香婷区久| 无码99| 凹凸7777操操操| 五月天婷婷久久日| 337p大胆噜噜噜噜噜91Av| 大香蕉九九| 欧美日韩99| 丁香激情网| 99热青青草| 97视频.干com| 国产精品成人AV在线| 国产精品国产| 猫咪伊人久久| 99热在线精品播放| 丁香六月婷婷开心| 色欲久久综合| 久久六月天| 99热情这里只有精品在线播放| 久草五月天| 丁香五月婷婷六月婷婷| 五月天色五月| 日日操夜夜操狠狠操| 狠狠狠狠狠干| 五月丁香va| 久久国产一区二区三区| 99热精这里只有精品| 岛国在线观看91| 一区二区三区四区无码| 五月婷无码| 婷婷精品性视频| 欧美精品久| 欧美狠狠色| www.久久久久久久| 岛国AV网| 伊人青草成人| 亚洲视频在线网站| 深爱激情五月天色婷婷| 婷婷婷婷婷婷婷婷婷婷丁香| 丁香婷婷综合激情五月色| 国外亚洲成AV人片在线观看| 午夜激情五月| 99热在线爱| 97干视频在线| 婷婷五月天成人导航| 久久98| 丁香五月天激情AV| 丁香9月婷婷| 亚洲激情综| 99re最新地址视频| 中文字幕精品无码一区二区| 性99网站| 第四色五月婷婷| se99视频| 思思色综合网站| 久久五月热| 精品99在线| 99在线精品视频免费| 97很鲁在线视频| 五月亭亭六月天| 亚洲第一成人无码A片| 五月丁香影院| 久色国产| 天天操中文字幕| 99色在线| 婷婷综合爱| 影音先锋一区| 亚洲精品久久久久久久久久吃药 | 超碰A V在线| 91婷婷色| 五月J香蕉婷婷| 丁香五月婷婷五月天| 丁香五月激情六月欧亚激情综合导航| 99精品视频在线观看| 啪啪小说五月天| 亚洲精品电影| 精品欧美性爱超级爽| 久久 天天| 亚洲av成人在线| 成人午夜天| 夜夜夜夜撸夜夜操| 99热播放| 成人片黄网站色大片免费毛片| 国产无套精品一区二区| 丁香五月综合高清在线| 狠狠色婷| 99久久激情视频| 99热精地址| 久婷| 久草婷妨| 五月婷在线观看| 99re这里只有精品视频了| 激情色色| 99艹精品在线观看| 99爱视频在线观看| 欧美日韩一区二区三区四区| 婷婷放心五日爱| 丁香六月欧美| 超碰免费人妻| 五月婷婷深深爱| 色婷婷深爱五月| www一起操| 天天色天天操天天射| 超碰在线人人| 丁香五月五月婷婷五月天激情四射| 午夜激情综合| 亚洲人成网站999综合| 婷婷另类小说| 天天爱天天狠天天透| 丁香五月激情综合网激情五月| 色婷婷综合亚洲| 99精品丁香五月| 五月丁香六月欧美综合网站| 九九热99热| 五月丁香综合久久| 九九色图| 日本情色一区二区| 少妇性按摩无码中文A片| 九九热中文| 久久人妻视步| 久久婷婷五月综合激情国产| 伊人激情啪啪| 97luluse| 久久九九99| 亚洲成人网站在线播放| 五月激情黄色小说| 色天堂操| yjzz亚洲国产| 丁香六月综合激情| 色丁香五月婷婷| 久久精品这里只有精品免费首页| 日日干夜夜撸夜夜骑| 99re在线观看| 4399在线观看免费毛片| 99操不停| 日韩黄色中文字幕| 五月丁香久久| 啪啪啪大香蕉| 综合久久高清| 久久99网| 日韩99色99| 69er小视频| 色五月xxx| 久99久视频| 色婷婷超碰| 婷婷丁香五月天熟女丝袜| 婷婷婷婷午夜| 爱久久小说下载网| 91综合在线| 久久丁香五月天| 婷婷天堂站| 五月婷中文字幕| 日韩一级网站| 九九视频在线观看| 噜噜五月天综合| 天天日人人| 狠色狠色狠狠色综合网| www.婷婷五月天| 先锋资源91| 五月婷丁香久久综合| 亚洲无AV在线中文字幕| 久久久激情| 天天日夜夜爽| 欧美这里只有精品| 亚洲情欲| 婷婷伊人网| 色丁香五月| www.yw尤物| 五月丁香综合啪啪| 九九青青草成人| 免费黄色片子| 久久九九热视频| 九九久久网| 99在线观看精品视频| 五月成人网站| 丁香激情五月天| 99热精品在线| 婷婷97狠狠成人网站| 中文字幕日产A片在线看| 99精品无码| 免费观看全黄做爰的视频| 99热这里有精品| 夜夜嗨一区二区三区直播内容| 99超超碰| 欧美三级巜人妻互换| 国产亚洲精品久久久久久豆腐| 狠狠干综合| 色日本五月天| 五月丁香综合激情网| 激情五月影院| 亭亭五月色男人| 激情五月丁香五月| 五月丁香婷婷色色| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 激情五月婷婷色播网| 韩国三级五月天婷婷。| 这里只有精品在线观看视频| 亚洲热视频| 五月丁香六月婷婷激情网| 久久性操| 九九热最新视频| 亚洲妇女熟BBW| 亚洲色图欧美色图日本视频| 日日操无码| 久久久久久99精品无码| 天天色播| 婷婷开心青青草| 日韩av网址大全| 五月丁香婷婷AV| 99热这里都是精品| 99精品在线| 久久caop| 黄色AAAA韩国guochansanji| 婷婷天堂综合网| 丁香五月激情月| 97在线/亚洲| 亚洲婷婷丁香五月在线| 91玖玖| 丁香五月天堂网AV| 9有码中文| 久久这里这里有精品免费视频| 五月丁香六月婷婷在线小说视频| 情婷婷五月天| 98色花堂98t.R| 亚洲色婷婷| 五月成人丁香av91| 天天综合五月天| 开心五月天私房婷婷| 情涩婷婷五月天| 欧美 日韩 成人| 综合激情婷婷| 国产亚洲成人综合| 99精品自拍视频| 婷婷黄色五月天在线视频| 99精品久久久久久久婷婷久久| 日本五月视频| 性生活视频98791| 国自产拍偷拍精品啪啪一区二区| 五月色丁香婷婷综合| 日本色婷婷| 亚洲婷婷五月天激情综合| 久久精品系列| 色婷婷丁香五月| 97操在线资源| 9er热在线精品视频| 亚洲AV成人无码久久精品老人法拉利| 97人妻碰碰碰久久香蕉| 国产又粗又大又爽又黄| 日本色色影院| 五月丁色AV| 五月亭亭狠狠| 99精品免费| 视频1区2区| 五月丁香久人妻中文| 激情五月婷在线精品| 色五月AV| 成人综合网站| 玖玖婷婷五月| 六月丁香五月激情网| 99精品视频偷拍| 五月婷婷香蕉视频| 五月丁香婷婷色色| 成人精品99| 天天插天天射| 久久香蕉婷婷| 提提热五月天婷婷| 五月婷婷啪啪啪| 亚洲中文AV| 九九热亚洲中文在线观看免费| 亚洲视色| 极品人妻VIDEOSSS人妻 | 婷婷五月激情中文字幕| 亚洲乱码日产精品BD| 国产黄色av| 日韩婷婷五月| 五月天婷婷综合| 大香焦啪啪啪| 在线va网站| 欧美色九| 久久丁香婷| 国内裸舞二区| 日本啪啪网| 色五月激情综合网站| 色噜噜,噜噜色| 色色丁香婷婷综合| 亚州精品成人片| 99热这里只有精品一| 91蜜桃婷婷狠狠久久综合9色| 五月情涩综合婷婷| 丁香五月婷婷激情123| 99热在线只有精品| 99人人干人人| 26UUU精品一区二区c〇m| 婷婷五月情| 亚洲国产网站| 天天干天天干天天干天天干天天| 日日操日日撸| 大香蕉五月天婷婷丁香91| 五月天五月天激情网| 精品人妻午夜一区二区三区四区| 婷婷中文字幕| www.久久爱.com| 激情五月天第四色| 色综合综合网| 无码免费人妻A片AAA毛片西瓜| 五月丁香六月综合情在线观看| 91狠狠色丁香| 婷婷九月丁香天堂丁香天堂| 日韩色情亚洲五月天婷婷| 天天色情站| 亚洲激情综合网| 99亚洲精品| 六月婷婷九月丁香亚洲综合| 三人荫蒂添的好舒服A片| 天天爱天天做天天日| 欧洲亚洲免费视频9| 亚洲一区二区无遮挡A片| 亚洲综合激情五月| 人操综合| 99热这里只是精品| 人妻内射一区二区在线视频| 狠狠夜夜五月丁香| 婷婷色婷婷| 五月久久五月激情| 26uuu最新地址| 91热在线| 色综合区| 久9久成人精品视频| 欧美日本另类| 9色在线视频精品观看| 99国产小视频| 99精品视频在线观看| 五月丁香亭亭成人电影| 狠狠综合网| 激情五月伊人婷婷| 91久热| 久久人妻爱爱| 农村熟妇高潮精品A片| 激情五月六月婷婷综合啪啪| 五月婷婷综合在线| 丁香激情合作五月| 97超碰婷婷五月天| 9这里只有精品| 丁香花大香蕉婷婷综合| 极品五月天| 久久久天堂国产精品女人| 久久久人妻不卡| 99视频只有精品| 这里只有精品日韩精品| 粉嫩AV久久一区二区三区| 99视频只有精品| 99riav 亚洲| 五月婷色激情五月| 色色色色区| 中文无码婷婷| 久久婷婷丁香五月一二三| 国产偷人爽久久久久久老妇APP | 国产毛片操B| 天天天天天久久久久久| 97操碰免费视频| 久久久精品人妻| 肏屄色播伊人97婷婷| 色色婷婷丁香| 色综合久久五月| 99国产在线精品视频| 深爱五月日韩| 大香蕉七区| 99ri在线观看视频| 98毛片| 国产69久久久欧美黑人A片| 午夜激情五月| 亚洲无码影片| 97五月天婷婷| 狠狠九九婷婷韩| 色情综合| 五月香蕉婷婷| 婷婷丁香久久网| 五月婷婷婷丁香播| 亚洲精品电影| 大地资源色婷婷视频在线 | 亚洲熟女色| 激情五月丁香五月| 天天干天天干天天干天天干天天干天天干天天 | 九九精品热| 丁香五月综合图片在线观看| 欧美三级视频| 激情综合网五月激情| 人妻九九九九| 免费做A爰片77777| Www.狠狠| 九九热中文| 国产SUV精品一区二区883| 色婷五月天激情| 中文字幕不卡+婷婷五月| 伊人激情AV一区二区三区| 热久久视频99| 国产探花一片区| 五月婷婷久久综合| 91色色五月天| 国产成人亚洲综合A∨婷婷| 激情五月丁香五月| www.wuyuetian啪啪| 五月婷视频在线| 琪琪秋霞| 婷婷在线中文字幕| 无码操B| 狠狠大香婷婷爱| 日本乱子人伦在线视频| 涩五月婷婷| 99热思思久| 久久ri精品| 五月天伊人久久久久| 电影蜘蛛女| 婷婷六月色情| 日本色婷婷| 九九99视频| 五月丁香六月婷婷,婷| 色婷婷情片| 91久久精品国产91性色TV| 成人在线网| 久久人妻视步| 亚洲激情电影五月天色婷婷丁香一起草 | 五月婷婷成人w| 激情综合区| 超碰免费电影| 成人无码髙潮喷水A片| 婷婷少妇激情| 人妻久久久久久久久久| 99视频精品视频| 丁香五月AV| 中文婷婷狠狠| 婷色五月天| 综合网色| 激情小说在线视频| 天天色天天爱天天爽| 婷婷色五月噜噜| 4399亚洲视频| 吾爱AV导航| 大香蕉220| 在线99热| 无码啪啪| 五月丁香激情综合网| 五月天狠狠干| 天天人人天天爽| 亚洲九区| 婷婷成人AV| av一区二区电影免费在线观看| 国产69久久久欧美黑人A片| 丁香九月激情| 夜夜久久综合网| 五月婷婷丁香俺日污视频| 五月婷婷激情69| 天天更新天天亚洲| 99er这里只有精品| 九月激情网|