0

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

  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)
            })
            
    
    })
4

2 回答 2

1

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

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

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

promoTable.select(['promo_code', 'promo_percentage', 'expiration_date'])
  .execute()
于 2021-10-18T08:51:53.493 回答
0

问题是我在哪里放置了结束 } 和 )。

.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)
        })
})
于 2021-11-26T16:21:12.657 回答