当我在调试会话期间在控制台中运行sequelize查询时,返回是一个未解决的承诺。但是,如何立即获得该查询/承诺的结果呢?
到目前为止我的方式:
Author.findOne({})
.then(function(error, result){
debugger;
//now I can work with the outcome in the console
})
这种方法非常耗时,查询中的简单更改需要重新运行整个调试会话才能看到新结果。
答案 0 :(得分:2)
即使Node在可能的情况下将操作卸载到操作系统,并且可能有多个线程在底层运行,但JavaScript /一个事件循环只有一个执行上下文。一旦达到断点,在产生控制权之前不会处理事件循环。因此,不会处理任何异步API操作。要获得续集查询的结果,必须继续执行。
除了使用调试器之外,您还可以考虑 REPL 方法。运行node --inspect-brk
并检查Chrome开发工具中的等待节点运行时(在chrome://inspect
下列出)。现在初始化sequelize,连接到db,加载Author
模型(或者在与--inspect
一起运行的安装脚本中执行此操作),然后评估以下内容:
await Author.findOne({})
您可以在控制台中检查生成的对象,将其存储在全局变量中(右键单击已评估的对象 - > 将其存储为全局变量),将全局存储的变量字符串化/复制到剪贴板(copy(JSON.stringify(temp1))
)等。您可以轻松调整并重新运行查询。