如何在控制台中运行一个sequelize查询?

问题描述:

当我在调试会话期间在控制台中运行一个sequelize查询时,返回是一个未解决的承诺。但是,我怎样才能立即得到查询/承诺的结果呢?如何在控制台中运行一个sequelize查询?

我这样做是到目前为止的方式:

Author.findOne({}) 
     .then(function(error, result){ 
       debugger; 
       //now I can work with the outcome in the console 
      }) 

这种方法是非常耗时的,查询简单的改变将需要整个调试会话的重播看到新的结果。

+0

我认为我会采取的方法是写测试反对它。通过这种方式,您可以一个接一个地快速运行测试,而且现在做您正在做的事情并不是那么耗时的事情。 – Jonathan

尽管Node尽可能将操作卸载到操作系统,并且可能有多个线程在运行,但JavaScript /一个事件循环只有一个执行上下文。一旦你到达一个断点,事件循环将不会被处理,直到你控制。因此,不会处理任何异步API操作。要获得您的后续查询的结果,您必须恢复执行。

除了使用调试器,您可以考虑采用一种方法。运行node --inspect-brk并检查Chrome开发工具中的等待节点运行时间(在chrome://inspect下列出)。现在初始化sequelize,连接到数据库,加载Author模型(或在安装脚本,你将与--inspect运行做到这一点),然后评估以下:

await Author.findOne({}) 

可以检查得到的对象在控制台,将其存储在一个全局变量中(右键单击评估对象 - >存储为全局变量),将全局存储的变量进行字符串化/复制到剪贴板(copy(JSON.stringify(temp1)))等等。您可以轻松调整并重新运行查询。