我正在使用NestJS和TypeORM。当尝试调用存储库的createMailLogEntry方法时,我收到以下错误:第一个月
我不知道出了什么问题。
邮寄.服务.ts
@Injectable()
export class MailingService {
constructor(@InjectRepository(MailLogEntryRepository) private mailLogEntryRepository: MailLogEntryRepository) { }
// ...
if(transferResult) {
await this.mailLogEntryRepository.createMailLogEntry({
creationDate: new Date(Date.now()),
from: mailContent.from,
to: mailContent.to,
subject: mailContent.subject,
text: mailContent.text,
html: mailContent.html,
cc: mailContent.cc,
bcc: mailContent.bcc,
});
}
}
}
邮件日志条目.存储库.ts
@EntityRepository(MailLogEntry)
export class MailLogEntryRepository extends Repository<MailLogEntry> {
async createMailLogEntry(mailLogEntryDto: MailLogEntryDto): Promise<MailLogEntry> {
const mailLogEntry = MailLogEntryRepository.createMailLogEntryFromDto(mailLogEntryDto);
return await mailLogEntry.save();
}
private static createMailLogEntryFromDto(mailLogEntryDto: MailLogEntryDto): MailLogEntry {
const mailLogEntry = new MailLogEntry();
mailLogEntry.from = mailLogEntryDto.from;
mailLogEntry.to = mailLogEntryDto.to;
mailLogEntry.subject = mailLogEntryDto.subject;
mailLogEntry.text = mailLogEntryDto.text;
mailLogEntry.html = mailLogEntryDto.html;
mailLogEntry.cc = mailLogEntryDto.cc;
mailLogEntry.bcc = mailLogEntryDto.bcc;
return mailLogEntry;
}
}
8条答案
按热度按时间hfwmuf9z1#
我也遇到过这个问题。请确保您正在将存储库导入模块。
下面是您的模块可能的外观。
l0oc07j22#
我也有同样的问题,我会告诉你是什么让我摆脱了它,如果它帮助别人!
如果您的存储库是手工创建的(不是由ORM生成的),那么您就不能使用存储库注入:
相反,只需像对服务那样使用存储库(只需删除@InjectRepository(People)):
我希望这会有帮助!编码快乐!
附言:个人是我的实体,帮助者与问题无关
vzgqcmou3#
也许这也会有帮助,这与@Simple Dev关于手工仓库的回答有关。例如,如果你创建一个实体,服务和仓库类有不同的名称,当你试图从服务调用仓库成员函数时,可能会没有定义。例如:
我也遇到过这个问题,在重命名我的服务和仓库后,错误消失了。对于前面的例子,解决方案是:人员、人员服务和人员存储库。
zd287kbt4#
对我来说,我已经将实体和该实体的自定义存储库一起导入。
nwwlzxa75#
我知道这是一个老问题,但我将把它留在这里,希望它可能会帮助到某人。您可以消除*repository*文件,并在服务的构造函数上使用@InjectRepository。然后,您可以访问服务上的所有存储库方法。请确保在模块的导入中包括TypeOrmModule.forFeature上的实体。
这里Product是我的实体,这是我从控制器调用的服务文件(ProductService)。
mutmk8jj6#
@MFuat,是的,今天早上终于修好了,我的也是和单元测试user.service.ts文件有关,原来我不是在嘲笑我测试文件里的register方法,所以我一嘲笑,测试就通过了。
aamkag617#
在新的TypeORM版本(0.3. )中,将自定义存储库更改为服务https://typeorm.io/custom-repository,这是一个稍微不同的方法,因此当前代码使用*@EntityRepository(MyEntity)**将不起作用。
改为:
除了其余的更改之外,可以使用DataSource以下面的方式实现自定义存储库,这对我来说似乎很简单:
然后将存储库注入到服务中。
并且该模块具有用于该特征和作为提供者的储存库的导入。
oalqel3c8#
我以前遇到过这个问题。它说函数是未定义的。我尝试了很多解决方案,但没有运气,然后我只是将回购名称从付款改为付款,它与我工作。所以尝试更改回购名称