MYSQL XDev API Javascript 从表中全选

Posted

技术标签:

【中文标题】MYSQL XDev API Javascript 从表中全选【英文标题】:MYSQL XDev API Javascript Select all from a table 【发布时间】:2021-10-08 18:23:06 【问题描述】:

我正在尝试从表中获取所有促销代码,但我不确定我们应该为绑定参数使用什么。我尝试了“*”、“”、“%%”和“%”,但结果未定义/没有结果。有人知道如何获得所有结果吗?

  router.post('/getpromocodes', function(res)
        mysqlx.getSession(stageConnectionmysqlx)
            .then(function(session)
            var promoTable = session.getSchema('exampleTable').getTable('promo')
            promoTable
                .select(['promo_code', 'promo_percentage', 'expiration_date'])
                .where('promo_code like :promo_code')
                .bind('promo_code', '*')
                .execute()
            )
            .then(function(result)
                let data = result.fetchAll()
                console.log('Here is the data', data)
                res.send(data)
            )
            .catch(function(err)
                console.log('the following error occured: ' + err.message)
            )
            
    
    )

【问题讨论】:

【参考方案1】:

使用where() 子句是否有特定原因?最后,X Plugin 会将 CRUD 操作转换为使用LIKE 的 SQL 语句,因此您受到相同的语法限制。

https://dev.mysql.com/doc/refman/8.0/en/pattern-matching.html

在最好的情况下,您应该直接删除 where() 子句,如下所示:

promoTable.select(['promo_code', 'promo_percentage', 'expiration_date'])
  .execute()

【讨论】:

我进行了上述更改,并在我的代码中添加了一个 console.log(session.inspect) 并且表中有数据。 (1行用于测试)。这是我得到的: auth: 'MYSQL41', host: '193.122.179.108', pooling: false, port: 33060, schema: undefined, socket: undefined, tls: false, user: 'robot', dbUser: [Getter], ssl: [Getter] Here is the result undefined the following error occured: Cannot read property 'fetchAll' of undefined 我不确定我是否理解这个问题。也许你我们可以把这个讨论转移到 MySQL 社区 Slack。这样,您应该能够提供更多更好的上下文。【参考方案2】:

问题在于我将结束的 和 ) 放在哪里。

.then 需要在执行后立即出现。正如 Rui 所描述的从表中提取所有内容,不要使用 .where 和 .bind 方法。

router.post('/getpromocodes', function(res)
    mysqlx.getSession(stageConnectionmysqlx)
        .then(function(session)
        var promoTable = session.getSchema('exampleSchema').getTable('promo')
        promoTable
            .select(['promo_code', 'promo_percentage', 'expiration_date'])
            .execute()
            .then(function(result)
              let data = result.fetchAll()
              console.log('Here is the data', data)
              res.send(data)
        )
    )     
        .catch(function(err)
            console.log('the following error occured: ' + err.message)
        )
)

【讨论】:

以上是关于MYSQL XDev API Javascript 从表中全选的主要内容,如果未能解决你的问题,请参考以下文章

回顾:Linux环境 Mysql新建用户和数据库并授权

使用 PHP foreach 循环的 javascript 中的 MySQL 数据(Google Maps API)

从 MySql 在 php 中创建 GeoJson 以与 MapBox javascript API 一起使用

Javascript 到 PHP PDO 到 MySQL 查询返回空

谷歌地图 api javascript 在 mozilla 中不起作用

如何在 JavaScript 中将时间戳转换为 MySQL DateTime?