如何在无服务器lambda中使用Typeorm的decorator



我想使用Typeorm访问AWS RDS上的postgress数据库(以及离线无服务器的本地数据库(。我已经设置了一个项目,它可以工作,但不能使用装饰器(这使得Typeorm不那么有趣(。医生说

您需要安装反射元数据填充程序:

npm安装反映元数据--保存

并将其导入应用程序的全局位置(例如应用程序内(:

导入"反映元数据";

我的问题是,在我的lambda代码中,没有"全局位置",我正在编写lambda函数。

作品:

import { EntitySchema } from "typeorm";
export class Status {
constructor(
public id: number,
public message: string,
) { }
}
export const statusSchema = new EntitySchema({
name: "Status",
target: Status,
columns: {
id: {
primary: true,
type: "int",
generated: true
},
message: {
type: "varchar"
},
}
});

但是如果使用这样的装饰器,我想要什么

@Entity()
export class Status {
constructor(
@PrimaryGeneratedColumn()
public id: number,
@Column()
public message: string,
) { }
}

我在查询时遇到的错误是

"ColumnTypeUndefinedError: Column type for Function#undefined is not defined and cannot be guessed. Make sure you have turned on an "emitDecoratorMetadata": true option in tsconfig.json. Also make sure you have imported "reflect-metadata" on top of the main entry file in your application (before any entity imported).If you are using JavaScript instead of TypeScript you must explicitly provide a column type.",
"at new ColumnTypeUndefinedError (/Users/jonas/repos/spiideo/status-service/src/error/ColumnTypeUndefinedError.ts:9:9)",
"at /Users/jonas/repos/spiideo/status-service/src/decorator/columns/Column.ts:139:23",
"at /Users/jonas/repos/spiideo/status-service/.build/src/entity/status.js:16:37",
"at DecorateConstructor (/Users/jonas/repos/spiideo/status-service/node_modules/reflect-metadata/Reflect.js:541:33)",
"at Object.decorate (/Users/jonas/repos/spiideo/status-service/node_modules/reflect-metadata/Reflect.js:130:24)",
"at __decorate (/Users/jonas/repos/spiideo/status-service/.build/src/entity/status.js:8:92)",
"at Object.<anonymous> (/Users/jonas/repos/spiideo/status-service/src/entity/status.ts:8:20)",
"at Module._compile (internal/modules/cjs/loader.js:1151:30)",
"at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)",
"at Module.load (internal/modules/cjs/loader.js:1000:32)",
"at Function.Module._load (internal/modules/cjs/loader.js:899:14)",
"at Module.require (internal/modules/cjs/loader.js:1040:19)",
"at require (internal/modules/cjs/helpers.js:72:18)",
"at Object.<anonymous> (/Users/jonas/repos/spiideo/status-service/src/service/status-service.ts:8:1)",
"at Module._compile (internal/modules/cjs/loader.js:1151:30)",
"at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)",
"at Module.load (internal/modules/cjs/loader.js:1000:32)",
"at Function.Module._load (internal/modules/cjs/loader.js:899:14)",
"at Module.require (internal/modules/cjs/loader.js:1040:19)",
"at require (internal/modules/cjs/helpers.js:72:18)",
"at Object.<anonymous> (/Users/jonas/repos/spiideo/status-service/src/controller/status-controller.ts:7:1)",
"at Module._compile (internal/modules/cjs/loader.js:1151:30)",
"at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)",
"at Module.load (internal/modules/cjs/loader.js:1000:32)",
"at Function.Module._load (internal/modules/cjs/loader.js:899:14)",
"at Module.require (internal/modules/cjs/loader.js:1040:19)",
"at require (internal/modules/cjs/helpers.js:72:18)",
"at Object.createHandler (/Users/jonas/repos/spiideo/status-service/node_modules/serverless-offline/src/functionHelper.js:215:15)",
"at handler (/Users/jonas/repos/spiideo/status-service/node_modules/serverless-offline/src/ApiGateway.js:485:40)",
"at module.exports.internals.Manager.execute (/Users/jonas/repos/spiideo/status-service/node_modules/@hapi/hapi/lib/toolkit.js:41:33)",
"at Object.internals.handler (/Users/jonas/repos/spiideo/status-service/node_modules/@hapi/hapi/lib/handler.js:46:48)",
"at exports.execute (/Users/jonas/repos/spiideo/status-service/node_modules/@hapi/hapi/lib/handler.js:31:36)",
"at Request._lifecycle (/Users/jonas/repos/spiideo/status-service/node_modules/@hapi/hapi/lib/request.js:312:68)",
"at processTicksAndRejections (internal/process/task_queues.js:97:5)"

看起来您正在尝试在构造函数中添加字段/属性。请参阅https://typeorm.io/#/embedded-关于表示字段的属性如何在类中而不是在构造函数中的实体。

最新更新