How to query from a many to many relationship?
Hi all,
I am trying to get all the posts by a user.
My schema has a many-to-many relationship set up for posts and users.
export const posts = pgTable('posts', {
id: uuid('id').primaryKey().defaultRandom().unique().notNull(),
});
export const postsRelations = relations(posts, ({ many }) => ({
users: many(users),
}));
export type Post = InferModel<typeof posts>;
And then:
export const users = pgTable('users', {
id: uuid('id').primaryKey().defaultRandom().unique().notNull(),
});
export const usersRelations = relations(users, ({ many }) => ({
posts: many(posts),
}));
export type User = InferModel<typeof users>;
Now in my file I want to
export default async function getAllUsersPosts(userId: string): Promise<Post[]> {
const results = await queryDB.select().from(posts).where(eq(posts.users.id, userId));
return results;
}
Error is:
Property 'users' does not exist on type 'PgTableWithColumns<{ name: "posts"; schema: undefined; columns: { id: PgColumn<{ name: "id"; tableName: "posts"; dataType: "string"; columnType: "PgUUID"; data: string; driverParam: string; notNull: true; hasDefault: true; enumValues: undefined; baseColumn: never; }
1 Reply
you can maybe use the RQB instead like