让我们看看这个选择:
getSession(<connectionOptions>)
.then(s => { return s.getSchema('<schema>') } )
.then(s => { return s.getTable('<table>') } )
.then(t => t.select('*') // or .select('COUNT(*)')
.where('<where>')
.execute(row => myHandler(row, <other params>)));
//
function myHandler(row, <other params>) {
...
}
我有三个问题,但在阅读https://dev.mysql.com/doc/x-devapi-userguide/en并在互联网上搜索后什么都没找到:
答案 0 :(得分:0)
then
之后添加execute
会让您知道执行已完成。then
时,可以引用该计数器以获取结果。第二个选项-基于this,看起来then
之后的最后一个execute
将以所有结果作为数组进行解析。因此,如果您只需要在获得所有结果后才采取行动,则不要在处理程序函数中添加任何内容,只需添加then
并在其中执行所需的操作即可。.then(t => t.count('*')
或.then(t => t.select('*').count()
P.S。我从未使用过xdevapi,它看起来很棒。如果您仅将其用于关系操作,建议您查看knex
答案 1 :(得分:0)
记录:
.execute之后,您可以添加.then,然后您可以在其中通过函数(受影响的行,生成的ID,警告等)访问一些有用的信息,并且当然可以赶上执行的结尾:
.execute()
.then(info => myInfoHandler(info,<other params>)
...
if (info.getAffectedRowsCount()==0) { //empty result set
}
这样,您不需要COUNT(*)。