gpt4 book ai didi

Mysql8 xdevapi node.js CRUD table.select 问题

转载 作者:行者123 更新时间:2023-11-30 21:34:23 25 4
gpt4 key购买 nike

让我们看看这个选择:

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并在互联网上搜索:

  1. 如何查看和处理选择结果集为空的情况?在 node.js xdevapi 实现中,我没有得到结果集,只有一个接一个的结果行,所以我想我的回调甚至没有被调用一次。
  2. 因为我的回调被调用了几次,所以我不知道最后一次调用它是什么时候,即我什么时候从结果集中获取最后一行。我怎样才能看到并处理它?<​​/li>
  3. COUNT(*)/* 在选择字符串中不被接受,这两种情况都会在 * 字符处抛出意外标记错误。不过,这是标准的 SQL。我可以看到我可以使用 session.sql('SELECT COUNT(*) FROM table') 但我很想知道为什么不在 CRUD 中呢?

最佳答案

  1. 您使用的是 promise ,而不是回调。所以在 execute 之后添加 then 会让你知道执行完成。
  2. 一个选项是:在处理程序函数中,您可以根据需要推送到外部数组或简单计数器,当调用 then 时,您可以引用计数器来获取结果。第二个选项 - 基于 this ,它看起来像 execute 之后的最后一个 then 将解析所有结果作为数组。因此,如果您需要在获得所有结果后才采取行动,请不要在您的处理程序函数中添加任何内容,只需添加 then 并在那里执行您需要的操作即可。
  3. 看起来您需要将其用作函数,例如 .then(t => t.count('*').then(t => t.select( '*').count()

附言我从未使用过 xdevapi,它看起来很棒。如果您仅将它用于关系操作,我建议您看一下 knex

关于Mysql8 xdevapi node.js CRUD table.select 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54726781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com