Nodejs typeorm + nest + sqlite, sqlite 文件怎么没更新

Nodejs typeorm + nest + sqlite, sqlite 文件怎么没更新

一脸懵逼,sqlite 文件还是 0b,但实际上代码执行是正常的,重复插入两次会失败。

是配置原因吗?

[@Module](/user/Module)({
  imports: [ApiModule, TypeOrmModule.forRoot({
      type: 'sqlite',
      database: '../sqlite/db',
      entities: [ BadgeApp, BadgeModule ],
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})

4 回复

文件没找对?


文件缓存吧?
你插入一次然后结束程序就会大小就会变

确实写错路径了

在使用 Node.js、TypeORM、NestJS 和 SQLite 组合开发时,如果发现 SQLite 数据库文件没有更新,可能是由于以下几个原因导致的。以下是一些排查和解决问题的步骤:

  1. 确认数据库连接配置: 确保你的 ormconfig.json 或相应的 TypeORM 配置文件中 SQLite 数据库文件的路径设置正确。

    {
      "type": "sqlite",
      "database": "path/to/your/database.sqlite",
      "synchronize": true,
      "logging": false,
      "entities": [
        "src/entity/**/*.ts"
      ],
      "migrations": [
        "src/migration/**/*.ts"
      ],
      "subscribers": [
        "src/subscriber/**/*.ts"
      ],
      "cli": {
        "entitiesDir": "src/entity",
        "migrationsDir": "src/migration",
        "subscribersDir": "src/subscriber"
      }
    }
    
  2. 检查同步设置: 确保 synchronize 选项设置为 true,这样 TypeORM 会在应用启动时自动同步实体与数据库结构。

  3. 事务处理: 如果你在使用事务,确保事务被正确提交。

    await getManager().transaction(async entityManager => {
      // your operations here
      await entityManager.save(yourEntity);
    });
    
  4. 检查错误日志: 开启 logging 选项,查看是否有错误被抛出但未被捕获。

  5. 重启应用: 有时候,简单地重启你的 Node.js 应用可以解决一些同步问题。

如果以上步骤都无法解决问题,请检查你的代码逻辑,确保数据库操作被正确执行且没有异常被吞没。

回到顶部