TanStackT
TanStack4mo ago
14 replies
ripe-gray

TypeORM with TanStack start

I have defined very simple code with TypeORM
import { User } from './User'
import { createServerOnlyFn } from '@tanstack/react-start'
import { AppDataSource } from './AppDataSource'

export const createNewUser = createServerOnlyFn(async () => {
    const userRepository = AppDataSource.getRepository(User)

    const user = new User()
    user.firstName = 'Timber'
    user.lastName = 'Saw'
    user.age = 25
    await userRepository.save(user)

    const allUsers = await userRepository.find()

    // find by id
    const firstUser = await userRepository.findOneBy({
        id: 1,
    })

    // find by firstName and lastName
    const timber = await userRepository.findOneBy({
        firstName: 'Timber',
        lastName: 'Saw',
    })

    // await userRepository.remove(timber)
})


Then i use it in loader of a component
export const Route = createFileRoute('/test-data-from-db')({
    component: RouteComponent,
    // Loaders run on server (unless defined otherwise with disabling SSR
    // or SPA mode). Database connections (queries) should always run on server
    // to not leak connection details to client.
    loader: async () => {
        const testData = await sql.query('select * from public.test_table')
        await createNewUser()
        return { dataFetchedWithNeonSdk: testData }
    },
})
Was this page helpful?