#Examples of many to many relationship?

1 messages · Page 1 of 1 (latest)

white stone
#

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!

#

To be clear, that schema only represents a 1:M relationship. Want to get that working first, but the goal is a M:M.

#

And to sort of rubber duck this a bit, one thought I had was to create a noteTopics join table. However, I think I am too locked in on a relational paradigm. The document db model is not something I have a lot of experience with.

glad spade
white stone
#

@glad spade perfect, thx, will take a look.