首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >TypeORM MongoDB存储库不会每次都保存

TypeORM MongoDB存储库不会每次都保存
EN

Stack Overflow用户
提问于 2018-08-12 17:05:09
回答 1查看 2.4K关注 0票数 0

我正在与TypeORM和MongoDB作斗争。我使用这个库已经有几个月了,但是我有一个不常见的问题。

当我保存一个实体时,我的数据有时会更新,有时不会。完全相同的请求不会在第一次起作用,但在第二次会起作用。我使用save()进行更新和插入。插入时一切正常。

下面是我的代码(带有NestJS的TypeORM):

==>实体

代码语言:javascript
复制
@Entity()
export class User {
  @ObjectIdColumn()
  @Type(() => String)
  id: ObjectID;

  @Column()
  address: string;
}

==> DTO

代码语言:javascript
复制
export class UpdateUserDto {
  @IsNotEmpty({ message: () => translate('validation.is_not_empty') })
  address: string;
}

==>控制器

代码语言:javascript
复制
@Put(':userId')
@Authentified()
async update(@Param('userId') userId, @Body() dto: UpdateUserDto) {
  return await this.usersService.update(userId, dto);
}

==> usersService:

代码语言:javascript
复制
import { MongoRepository } from 'typeorm';
...
private readonly userRepository: MongoRepository<User>
...
async update(userId: string, dto: UpdateUserDto): Promise<User> {
   const user = await this.userRepository.findOneOrFail(userId);
   user.address = dto.address;

   return await this.userRepository.save(user);
}

当我在()之后找到()时,我的用户地址没有更新,而我从Mongo1收到了modifiedCount 1。如果我重复这个请求,这一次它可以工作了……

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-18 05:09:31

几个月后,我终于明白了……

在我的Auth中间件中,我记录了一个时间戳来存储用户上次连接到NodeJS的时间。这意味着我使用了save()两次:在中间件和我的服务中!有时它是有效的,因为保存时间戳足够快,可以让我的服务保存更新,有时不是。我没有使用$set (),而是使用带有$set的updateOne(),没有更多的并发问题。

我回答了我自己的问题,希望这对其他人有帮助!

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

https://stackoverflow.com/questions/51807338

复制
相关文章

相似问题

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