簡體   English   中英

如何使用 Prisma 2 實現社交媒體“關注提要”查詢?

[英]How to implement a social media “following feed” query using Prisma 2?

我有一個與編寫“社交媒體”樣式提要查詢有關的問題,但在這種情況下,我使用的是 Prisma 2。我有一個音樂應用程序,我想在其中顯示User關注的Artists的所有Albums的提要.

在我的schema.prisma中,我有以下模型:

用戶

model User {
  id         Int      @id @default(autoincrement())
  email      String   @unique
  following  Artist[]
}

藝術家

model Artist {
  id        Int     @id @default(autoincrement())
  name      String
  followers User[]
  albums    Album[]
}

Prisma 創建一個名為UserToArtist的隱式連接表來跟蹤User何時關注Artist

專輯

model Album {
  id          Int      @id @default(autoincrement())
  title       String
  date        DateTime <-- this is an ISO date string
  artists     Artist[] <-- an album can have several artists
}

Prisma 創建一個名為ArtistToAlbum的隱式連接表來跟蹤哪些Artists與某些Albums相關聯。


那么如何創建一個 Prisma 查詢來查找用戶按照Album日期排序的所有藝術家專輯呢? 這是我的第一次嘗試,但這似乎不正確,專輯未按日期排序:

const results = await ctx.db.album.findMany({
  where: {
    date: {
      gt: moment().startOf('day').toISOString()
    },
    artists: {
      some: {
        followers: {
          some: {
            id: args.userId, <-- the userId for the feed
          },
        },
      },
    },
  },
  orderBy: {
    date: 'asc',
  },
})

請注意我必須如何通過兩個some語句進行過濾? 只是感覺不對……對於這樣的查詢,您有什么建議? 謝謝!

您可以使用流暢的 API 抓取用戶關注的所有藝術家,它應該看起來像這樣:

const followedArtists = await ctx.db.user.findOne({ where: { id: args.userId, } }).following()

從這里您可以獲取所有這些藝術家的專輯,然后在您的服務器代碼中對它們進行排序,然后作為查詢結果發回

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM