【发布时间】:2021-11-14 07:02:44
【问题描述】:
重新安装 node_modules 后,我的 NestJS 服务中突然出现 FindOneOptions/ObjectID 错误。
几分钟前正在建设良好。 让我想知道,这是代码错误还是打字错误?
使用“@nestjs/typeorm”:“^7.1.5”
这似乎正在使用 typeorm 0.2.35:
本地安装版本:0.2.35.
全局安装的 TypeORM 版本:0.2.37。
实际代码
async getOne(id: number, userId?: string, type?: XPType, currentUser?: User) {
const options: FindConditions<XP> = {
id
};
userId && (options.userId = userId);
type && (options.type = type);
const post = await XP.findOne(options); // <-- error
...
这是实际的错误:
No overload matches this call.
Overload 1 of 3, '(this: ObjectType<XP>, id?: string | number | Date | ObjectID, options?: FindOneOptions<XP>): Promise<...>', gave the following error.
Argument of type 'FindConditions<XP>' is not assignable to parameter of type 'string | number | Date | ObjectID'.
Type 'FindConditions<XP>' is missing the following properties from type 'ObjectID': generationTime, equals, generate, getTimestamp, toHexString
Overload 2 of 3, '(this: ObjectType<XP>, options?: FindOneOptions<XP>): Promise<XP>', gave the following error.
Type 'FindConditions<XP>' has no properties in common with type 'FindOneOptions<XP>'.
Overload 3 of 3, '(this: ObjectType<XP>, conditions?: FindConditions<XP>, options?: FindOneOptions<XP>): Promise<...>', gave the following error.
Argument of type 'import("/Users/bracicot/dev/dev-server/dev-server/node_modules/typeorm/find-options/FindConditions").FindConditions<import("/Users/bracicot/dev/dev-server/packages/server-common/dist/entities/experience-post.entity").XP>' is not assignable to parameter of type 'import("/Users/bracicot/dev/dev-server/packages/server-common/node_modules/typeorm/find-options/FindConditions").FindConditions<import("/Users/bracicot/dev/dev-server/packages/server-common/dist/entities/experience-post.entity").XP>'.
Types of property 'userId' are incompatible.
Type 'string | import("/Users/bracicot/dev/dev-server/dev-server/node_modules/typeorm/find-options/FindOperator").FindOperator<string>' is not assignable to type 'string | import("/Users/bracicot/dev/dev-server/packages/server-common/node_modules/typeorm/find-options/FindOperator").FindOperator<string>'.
Type 'FindOperator<string>' is not assignable to type 'string | FindOperator<string>'.
Type 'import("/Users/bracicot/dev/dev-server/dev-server/node_modules/typeorm/find-options/FindOperator").FindOperator<string>' is not assignable to type 'import("/Users/bracicot/dev/dev-server/packages/server-common/node_modules/typeorm/find-options/FindOperator").FindOperator<string>'.
Types have separate declarations of a private property '_type'.ts(2769)
const options: FindConditions<XP>
似乎与4241 有关,但不确定。我希望有人可以帮助我理解这一点。
【问题讨论】:
-
XP的类型是什么?我和你一样使用FindConditions类型,但使用自定义存储库 -
嘿@MicaelLevi 这是一个对数据建模的类。其中包含标准数据内容,例如 id、title 和许多其他内容。现在我已经将
FindConditions<XP>的所有实例更改为any。不知道这里发生了什么。
标签: javascript node.js typescript nestjs typeorm