![](/img/trans.png)
[英]TYPEORM RepositoryNotFoundError: No repository for "i" was found. Looks like this entity is not registered in current "default" connection?
[英]RepositoryNotFoundError: No repository for [Enitity] was found when I using imports
我開始在我的 nodejs 應用程序中使用typeorm
(純節點,無嵌套)。
而且我還有一個文件,里面有使用typeorm
的函數:
import {getRepository} from 'typeorm';
import { User, Post, ... } from './entities';
export const foo = () => {
const userRepository= getRepository(User);
... my logic ...
user.find(...);
... my logic ...
}
export const bar = () => {
const userRepository= getRepository(User);
const postRepository= getRepository(Post);
... my logic ...
user.create(...);
... my logic ...
}
export const baz = () => {
const userRepository= getRepository(User);
... my logic ...
user.delete(...);
}
我不喜歡在我寫的每個 function 中調用getRepository
function。 我更喜歡這樣使用import
:
import { UserRepository, PostRepository, ... } from './repos';
問題是在建立連接之前我無法使用getRepository
。 它給我一個錯誤說:
RepositoryNotFoundError: No repository for [Enitity] was found. Looks like this entity is not registered in current "default" connection?
我所做的是(repos.ts):
export const UserRepository = getRepository(User);
export const PostRepository = getRepository(Post);
因為它已經export
節點/webpack 嘗試先解決這個變量。 在應用程序運行之前(以及在建立連接之前)。
那么知道如何讓它按我的意願工作嗎?
我認為您的意思是一種稱為 Active Record 的模式。
typeorm
可以選擇使用 Data Mapper(您現在正在使用的,使用getRepository
或使用 Active Record 即BaseEntity
。
對於 Active Record,您可以使用 export 將它們導出並導入它們而不會出現此錯誤。
例如:
@Entity()
export class User extends BaseEntity { ... }
User.findOne(..), User.find(..)
數據映射器:
export class UserRepository extends Repository<User> {...}
const userRepository = connection.getRepository(User);
userRepository.findOne, userRepository.find(...)
閱讀有關Active Record 與 Data Mapper的更多信息。
在您的 ormconfig 文件中,添加具有調用 .ts 和 .js 格式的值的實體 object。
這是示例
import * as dotenv from 'dotenv';
import { ConnectionOptions } from 'typeorm';
dotenv.config();
const config: ConnectionOptions = {
type: 'mysql',
host: process.env.DB_HOST,
port: parseInt(process.env.DB_PORT),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
entities: [__dirname + '/**/*.entity{.ts,.js}'],
synchronize: process.env.DB_SYNCHRONIZE === 'true',
migrationsRun: !(process.env.DB_SYNCHRONIZE === 'true'),
logging: true,
logger: 'file',
migrations: [__dirname + '/migrations/**/*{.ts,.js}'],
cli: {
migrationsDir: 'migrations',
},
};
export = config;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.