AndersRA
Convex Community3y ago
6 replies
AndersR

Examples of many to many relationship?

I am testing out Convex by building a notes app, in which notes and topics have a M:M relationship. Are there good examples or suggested best practices for implementing this? The only thing I've seen is the convex demos example - https://github.com/get-convex/convex-demos/tree/main/relational-data-modeling, which is quite basic. I also looked in the docs but didn't see anything. Here are a couple examples of what I'd be interested in seeing examples of:

- Create a topic and associate with a note.
- Query a note and get associated topics.
(several more but just focusing on those for now)

Here is my current schema:

export default defineSchema({
  notes: defineTable({
    content: v.optional(v.string()),
    ownerId: v.string(),
    title: v.string(),
    topics: v.array(v.id("topics")),
  }),
  topics: defineTable({
    ownerId: v.string(),
    title: v.string(),
  }),
});


Is using an array of topic ids the correct way to go to make the association? When querying a note, how would I then collect and return the topics? I tried looping through each topic in the topic array and then doing a get on each topic but that did not work.

Any tips or insights would be appreciated!

Thanks!
Was this page helpful?