TypeORM with TanStack start
I have defined very simple code with TypeORM
Then i use it in loader of a component
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)
})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 }
},
})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 }
},
})