如何在控制台中运行一个sequelize查询?
问题描述:
当我在调试会话期间在控制台中运行一个sequelize查询时,返回是一个未解决的承诺。但是,我怎样才能立即得到查询/承诺的结果呢?如何在控制台中运行一个sequelize查询?
我这样做是到目前为止的方式:
Author.findOne({})
.then(function(error, result){
debugger;
//now I can work with the outcome in the console
})
这种方法是非常耗时的,查询简单的改变将需要整个调试会话的重播看到新的结果。
答
尽管Node尽可能将操作卸载到操作系统,并且可能有多个线程在运行,但JavaScript /一个事件循环只有一个执行上下文。一旦你到达一个断点,事件循环将不会被处理,直到你控制。因此,不会处理任何异步API操作。要获得您的后续查询的结果,您必须恢复执行。
除了使用调试器,您可以考虑采用一种方法。运行node --inspect-brk
并检查Chrome开发工具中的等待节点运行时间(在chrome://inspect
下列出)。现在初始化sequelize,连接到数据库,加载Author
模型(或在安装脚本,你将与--inspect
运行做到这一点),然后评估以下:
await Author.findOne({})
可以检查得到的对象在控制台,将其存储在一个全局变量中(右键单击评估对象 - >存储为全局变量),将全局存储的变量进行字符串化/复制到剪贴板(copy(JSON.stringify(temp1))
)等等。您可以轻松调整并重新运行查询。
我认为我会采取的方法是写测试反对它。通过这种方式,您可以一个接一个地快速运行测试,而且现在做您正在做的事情并不是那么耗时的事情。 – Jonathan