首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RepositoryNotFoundError : TypeORM

RepositoryNotFoundError : TypeORM
EN

Stack Overflow用户
提问于 2017-09-01 04:26:48
回答 4查看 23.9K关注 0票数 11

我正在尝试让下面的示例正常工作:

https://github.com/typeorm/javascript-example/tree/master/src/app3-es6

我遇到了以下错误:

代码语言:javascript
复制
Error
    at new RepositoryNotFoundError (...\node_modules\typeorm\connection\error\RepositoryNotFoundError.js:24:23)
    at Connection.findRepositoryAggregator (...\node_modules\typeorm\connection\Connection.js:513:19)
    at Connection.getRepository (...\node_modules\typeorm\connection\Connection.js:405:21)
    at ...\index.js:27:37
代码语言:javascript
复制
name: 'RepositoryNotFoundError',
  message: 'No repository for "Post" was found. Looks like this entity is not registered in current "default" connection?'

这是index.js

代码语言:javascript
复制
const typeorm = require("typeorm"); // import * as typeorm from "typeorm";
const Post = require("./model/Post"); // import {Post} from "./model/Post";
// import Post from './model/Post.js';
const Category = require("./model/Category"); // import {Category} from "./model/Category";

typeorm.createConnection({
    driver: {
        type: "oracle",
        host: "localhost",
        port: 1521,
        username: "uname",
        password: "pwd",
        sid: "dev"
    },
    entities: [
        __dirname + "/entity/*.js"
    ],
    autoSchemaSync: true
}).then(function (connection) {
    console.log(connection);

    let post = new Post.Post();
    post.title = "Control flow based type analysis";
    post.text = "TypeScript 2.0 implements a control flow-based type analysis for local variables and parameters.";
    post.categories = [new Category.Category(0, "TypeScript"), new Category.Category(0, "Programming")];

    let postRepository = connection.getRepository(Post.Post);
    postRepository.persist(post)
        .then(function(savedPost) {
            console.log("Post has been saved: ", savedPost);
            console.log("Now lets load all posts: ");

            return postRepository.find();
        })
        .then(function(allPosts) {
            console.log("All posts: ", allPosts);
        });
}).catch(function(error) {
    console.log("Error: ", error);
});

模型位于/ Post.js /中

代码语言:javascript
复制
/*export */ class Post {
    constructor(id, title, text, categories) {
        this.id = id;
        this.title = title;
        this.text = text;
        this.categories = categories;
    }
}

module.exports = {
    Post: Post
};

Category.js

代码语言:javascript
复制
/*export */ class Category {
    constructor(id, name) {
        this.id = id;
        this.name = name;
    }
}

module.exports = {
    Category: Category
};

/entity/中的PostSchema.js

代码语言:javascript
复制
const Post = require("../model/Post"); // import {Post} from "../model/Post";
const Category = require("../model/Category"); // import {Category} from "../model/Category";
const PostSchema = {
    target: Post,
    columns: {
        id: {
            primary: true,
            type: "int",
            generated: true
        },
        title: {
            type: "string"
        },
        text: {
            type: "text"
        }
    },
    relations: {
        categories: {
            target: Category,
            type: "many-to-many",
            joinTable: true,
            cascadeInsert: true
        }
    }
};

module.exports = {
    PostSchema: PostSchema
};

CategorySchema.js

代码语言:javascript
复制
const Category = require("../model/Category"); // import {Category} from "../model/Category";
const CategorySchema = {
    target: Category,
    columns: {
        id: {
            primary: true,
            type: "int",
            generated: true
        },
        name: {
            type: "string"
        }
    }
};

module.exports = {
    CategorySchema: CategorySchema
};

我不知道我做错了什么

EN

回答 4

Stack Overflow用户

发布于 2018-03-05 22:53:43

看起来你的实体导入不起作用。如果通过通配符导入:

代码语言:javascript
复制
entities: [
    __dirname + "/entity/*.js"
],`

确保你的模型被编译成js。您也可以直接导入

代码语言:javascript
复制
createConnection({ 
    ..., 
    entities: [
        Post,
        ...
    ],}).then(...)
票数 19
EN

Stack Overflow用户

发布于 2019-07-22 14:09:40

对于那些正在使用typescript并遇到此问题的用户:请注意,在指定实体路径时,需要同时包含tsjs文件后缀:

在本地运行时使用的

  • ts在通过tsc.

进行生产构建时使用的ts-node

  • js

代码:

代码语言:javascript
复制
import * as path from 'path';
// ...
entities: [
    // assuming _dirname is your project root
    path.resolve(__dirname, '**/*.entity{.ts,.js}'),
],
票数 10
EN

Stack Overflow用户

发布于 2019-11-05 12:45:12

几个月来,我遇到了同样的问题,最终我发现自己做错了什么。

导入实体时,请确保文件名完全匹配。它不会抛出任何错误,但在运行时,它会抛出上面的错误。

例如。在实体或模型类中,如果我们像这样导入,

代码语言:javascript
复制
import { FooClass } from "./foo-Class.model";

它不同于

代码语言:javascript
复制
import { FooClass } from "./foo-class.model";

它不会显示任何错误,但当您尝试调用该表时,它将显示完全相同的错误。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45989574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档