首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

typeorm cli不会等待从ormconfig.ts导出的异步方法

TypeORM是一个用于Node.js和浏览器的ORM(对象关系映射)框架,它允许开发人员使用面向对象的方式来操作数据库。TypeORM提供了一个命令行工具(CLI),用于执行数据库迁移、生成实体类等操作。

在使用TypeORM CLI时,它会读取项目根目录下的ormconfig.ts文件作为配置文件。ormconfig.ts文件是一个导出配置对象的模块,其中可以包含一些异步方法。然而,TypeORM CLI不会等待这些异步方法执行完成。

这意味着,如果在ormconfig.ts中定义了异步方法,例如用于动态获取数据库连接配置的方法,TypeORM CLI将不会等待该方法执行完成,而是立即使用默认的配置对象进行操作。

为了解决这个问题,可以在ormconfig.ts中使用同步方法来定义配置对象,或者在异步方法中使用await关键字来等待异步操作完成。以下是一个示例:

代码语言:txt
复制
import { ConnectionOptions } from 'typeorm';

const getConnectionOptions = async (): Promise<ConnectionOptions> => {
  // 异步获取数据库连接配置
  const config = await getDatabaseConfig();
  return config;
};

export = getConnectionOptions;

在上述示例中,getConnectionOptions方法是一个异步方法,用于获取数据库连接配置。TypeORM CLI将不会等待该方法执行完成。如果需要TypeORM CLI等待该方法执行完成,可以使用await关键字:

代码语言:txt
复制
import { ConnectionOptions } from 'typeorm';

const getConnectionOptions = async (): Promise<ConnectionOptions> => {
  // 异步获取数据库连接配置
  const config = await getDatabaseConfig();
  return config;
};

export = await getConnectionOptions();

通过在导出配置对象之前使用await关键字,TypeORM CLI将等待getConnectionOptions方法执行完成后再继续执行。

总结:TypeORM CLI不会等待从ormconfig.ts导出的异步方法。为了确保异步方法执行完成,可以使用同步方法定义配置对象,或者在异步方法中使用await关键字等待异步操作完成。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 学完这篇 Nest.js 实战,还没入门的来锤我!(长文预警)

    这里省略一个漫长的等待过程~, 终于看到了它成功了(然后我又删除了,使用yarn,确实速度快了很多) 接下来按照提示运行项目: 这里说一下我安装的环境,Nest.js版本不同有些API会有差异 包...如果因为在匹配过程中, 发现@Put("list/:id")已经满足了,就不会继续往下匹配了,所以@Put("list/user")装饰的方法应该写在它之前。...其实nest-cli提供的创建命令还有很多, 比如创建过滤器、拦截器和中间件等,由于这里暂时用不到,就不过多的介绍,后面章节用到了再介绍。...typeORM操作数据库, 首先我们要安装以下依赖包: npm install @nestjs/typeorm typeorm mysql2 -S 官方提供了两种连接数据库的方法, 这里分别介绍一下:...这意味着当抛出异常时,它们由核心异常处理程序和应用于当前上下文的 异常过滤器 处理。当在 Pipe 中发生异常,controller 不会继续执行任何方法。

    14.6K65

    一杯茶的时间,上手 Koa2 + MySQL 开发

    ❞ 凭借精巧的“洋葱模型”和对 Promise 以及 async/await 异步编程的完全支持,Koa 框架自从诞生以来就吸引了无数 Node 爱好者。...在这个中间件的第一阶段,我们通过 Date.now() 先获取请求进入的时间,然后通过 await next() 让出执行权,等待下游中间件运行结束后,再在第二阶段通过计算 Date.now() 的差值来得出处理请求所用的时间...routes 方法获取到对应的 Koa 中间件,还调用了 allowedMethods 方法注册了 HTTP 方法检测的中间件,这样当用户通过不正确的 HTTP 方法访问 API 时,就会自动返回 405...所有请求都可以直接访问未受保护的路由,但是受保护的路由就放在 JWT 中间件的后面(或者从洋葱模型的角度看是“里面”),这样对于没有携带 JWT Token 的请求就直接返回,而不会继续传递下去。...由于 Koa 采用了 async 函数和 Promise 作为异步编程的方案,所以错误处理自然也很简单了——直接用 JavaScript 自带的 try-catch 语法就可以轻松搞定。

    3.6K40

    学完这篇 Nest.js 实战,还没入门的来锤我!(长文预警)

    这里省略一个漫长的等待过程~, 终于看到了它成功了(然后我又删除了,使用yarn,确实速度快了很多) 接下来按照提示运行项目: 这里说一下我安装的环境,Nest.js版本不同有些API会有差异 包...如果因为在匹配过程中, 发现@Put("list/:id")已经满足了,就不会继续往下匹配了,所以 @Put("list/user")装饰的方法应该写在它之前。...其实nest-cli提供的创建命令还有很多, 比如创建过滤器、拦截器和中间件等,由于这里暂时用不到,就不过多的介绍,后面章节用到了再介绍。...typeORM操作数据库, 首先我们要安装以下依赖包: npm install @nestjs/typeorm typeorm mysql2 -S 复制代码 官方提供了两种连接数据库的方法, 这里分别介绍一下...这意味着当抛出异常时,它们由核心异常处理程序和应用于当前上下文的 异常过滤器 处理。当在 Pipe 中发生异常,controller 不会继续执行任何方法。

    10.6K11

    如何使用 NestJs、PostgreSQL、Redis 构建基于用户设备的授权验证

    通过运行以下命令在全局安装 Nestjs CLI: npm i -g @nestjs/cli 进入 device-authentication 文件夹,并通过运行以下命令创建一个 NestJs 应用程序...typeorm @nestjs/typeorm :由于我们使用PostgreSQL,我们需要它作为我们的对象关系模型。 运行我们的服务器 运行下面的命令来启动我们的服务器。...在上面的代码中,以下的 lines 36 and 37 帮助我们使用从用户获取的负载中的 email 地址来获取用户的最后活跃设备,使用我们的 redisCacheService 实例的 get() 方法...我们还需要创建一个名为 sayHello() 的新方法,用于身份验证保护。...在上面的代码中,我们调用了 del() 实例的 redisCacheService 方法。这将从包含用户设备详细信息的缓存中删除用户的电子邮件键。

    44221

    20. 精读《Nestjs》

    3.1 Typeorm 有了如此强大的后端框架,必须搭配上同等强大的 orm 才能发挥最大功力,Typeorm 就是最好的选择之一。...,就需要指定更新时,不校验没有赋值的字段,我们通过 Typeorm 的 EventSubscriber 完成数据库操作前的代码校验,并控制新增时全字段校验,更新时只校验赋值的字段,删除时不做校验: @EventSubscriber...beforeUpdate(event: UpdateEvent) { const validateErrors = await validate(event.entity, { // 更新操作不会验证没有涉及的字段...在使用 Typeorm 查询 User 时,会自动外键查询到其关联的评论,保存在 user.comments 中。...有一个问题,就是 nodejs 服务运行时,要等待数据库服务启动完毕,也就是有一个启动等待的需求。

    4K20

    2022 前端技术领域这些新变化,你准备好了吗?

    Deno Deno 开始在 cli 脚本和serverless 方面展露头脚。 Deno 在传统生产项目上和 Node 仍然不会有太大的冲突。...但是 Deno 在用 TS 写脚本方面,对比 Node.js 是有优势的。这一点优势应该最大化利用。 Deno 的依赖是不会污染 Npm 的,因为本身和 NPM 正交。...Deno 非常适合制作 cli,且用 cli 来抹平 NPM 和 Deno 世界的最后一公里。 虽然目前 Deno 的 swc 有各种问题,使用 bundle+compile 目前还有很多问题。...本质是工具抽象的普遍普及化,也是前端世界上一阶段的积累开花结果的情况。有意思的是,据我从 github 的 trending 上来看,这些项目,大部分还都是国人所做,质量很高,但是同质化很严重。...越来越流行 prisma: https://www.npmjs.com/package/prisma typeorm 趋于稳定(JS 的装饰器成熟对于 typeorm 可能是利空) typeorm:

    1.2K10

    做了一个Nest.js上手项目,很丑,但适合练手和收藏

    虽然 Nest.js 文档也齐全,但是如果你稍微做重一点的业务,它就有点顶不住了,很多东西都要 试。那这个时候 nest-todo 就可以站出来说:“不会就抄我吧,我肯定能 Work”。...-- -n", "migration:run": "npm run build && npm run typeorm migration:run" 但是,TypeORM 是从哪知道数据表的结构的呢?.../#/using-ormconfig # 生产环境在服务器上的容器里配置 TYPEORM_CONNECTION=mariadb TYPEORM_DATABASE=nest_todo TYPEORM_HOST...这里 Nest.js 将这个 verifyCallback 封装成了 Strategy 里的 validate 方法,当编写 valiate 则是在写 verifyCallback: @Injectable...我相信绝大部分人是不会写测试,当然他们自己也是不会写的。 它不是 “Jest”,也不是 “Cypress”,而是一个可以研究得很深的领域。它难的点并不在于 “写”,而在于 “造”,以及 测试策略。

    4.8K42

    做了一个Nest.js上手项目,很丑,但适合练手和收藏

    虽然 Nest.js 文档也齐全,但是如果你稍微做重一点的业务,它就有点顶不住了,很多东西都要 试。那这个时候 nest-todo 就可以站出来说:“不会就抄我吧,我肯定能 Work”。...-- -n", "migration:run": "npm run build && npm run typeorm migration:run" 但是,TypeORM 是从哪知道数据表的结构的呢?.../#/using-ormconfig # 生产环境在服务器上的容器里配置 TYPEORM_CONNECTION=mariadb TYPEORM_DATABASE=nest_todo TYPEORM_HOST...这里 Nest.js 将这个 verifyCallback 封装成了 Strategy 里的 validate 方法,当编写 valiate 则是在写 verifyCallback: @Injectable...我相信绝大部分人是不会写测试,当然他们自己也是不会写的。 它不是 “Jest”,也不是 “Cypress”,而是一个可以研究得很深的领域。它难的点并不在于 “写”,而在于 “造”,以及 测试策略。

    3.3K30

    前端CLI脚手架思路解析并从0到1搭建

    ${err}`)) process.exit() }}// 将上面的 setMirror(link) 方法导出module.exports = setMirror复制代码 需要注意的是 async...'Download template successful.' // 终止等待动画并显示 ✔ 标志 dlSpinner.succeed()}// 将上面的 dlTemplate() 方法导出module.exports...= dlTemplate复制代码 我们先用 fse.remove() 清空模板文件夹的内容(不考虑模板文件夹存在与否,因为文件夹不存在不会报错),然后执行等待动画并请求下载,模板文件名固定为 template.zip...上述代码有两处加了 process.exit() ,意味着将强制进程尽快退出(有点类似 return 的作用,只不过 process.exit() 结束的是整个进程),哪怕还有未完全完成的异步操作。...catch (err) { console.error(err) process.exit() }}// 将上面的 initProject(projectName) 方法导出

    1.5K31

    听 GPT 讲 Deno 源代码 (13)

    该结构体的方法可以根据指定的模块名和版本,从NPM解析器中获取模块的元数据、依赖关系和URL等信息。...它包含了三个选项:从未修改过的快照(Fresh),从磁盘加载的快照(Load),以及从URL下载的快照(Download)。这些选项可以根据需要来选择CLI NPM解析器的运行方式。...它实现了NapiModule trait,用于注册和导出符号。 构造函数new从NapiEnv和初始导出的JsValue列表创建一个新的SymbolExports实例。...promise: 异步任务的Promise对象,用于异步操作的结果通知。 AsyncResource:这是一个 trait,定义了异步资源相关的接口方法。包括实现异步任务的创建、执行和析构等方法。...总结来说,deno/cli/napi/async.rs文件中的AsyncWork结构体和相关方法用于管理和执行异步任务,AsyncResource trait 定义了异步资源相关的接口方法,DropData

    9010

    开发前端 CLI 脚手架思路解析

    notifier.notify() } else { console.log('No new version is available.') } } // 将上面的 updateChk() 方法导出...jsonConfig) } catch (err) { console.error(err) process.exit() } } // 将上面的 defConfig() 方法导出...${err}`)) process.exit() } } // 将上面的 setMirror(link) 方法导出 module.exports = setMirror 需要注意的是 async...方法导出 module.exports = dlTemplate 我们先用 fse.remove() 清空模板文件夹的内容(不考虑模板文件夹存在与否,因为文件夹不存在不会报错),然后执行等待动画并请求下载...上述代码有两处加了 process.exit(),意味着将强制进程尽快退出(有点类似 return 的作用,只不过 process.exit() 结束的是整个进程),哪怕还有未完全完成的异步操作。

    79111

    混搭 TypeScript + GraphQL + DI + Decorator 风格写 Node.js 应用

    本文选用技术框架是 Midway.js,设计思路可以迁移到 Nest.js 等框架上,改动量应该不会太大。 本文长约 1.3w 字,阅读时间约 20min 1....前端内部写的后端应用基本上功能并不会太多(太专业的后端服务交给后端开发来做),绝大部分是基础的操作,在这样的情况下会涉及到很多重复工作量要做,基本都是一样的套路: 初始化项目脚手架 数据库的连接操作 +...getMiddleware 方法取得中间件函数,注入 TypeGraphQL 所管理的 schema 并导出该函数。...服务器,而真正进行分页操作的还是 Service 层,内部利用 ORM 提供的方法;在TypeORM 中的分页功能实现,可以参考一下官方的 find 选项的完整示例: userRepository.find...到这里一个简单的 GraphQL 分页功能就开发完毕,从流程步骤来看,一路下来几乎都是装饰器语法,整个编写过程干净利落,很利于后期的扩展和维护。 6.

    3.3K20
    领券