【问题标题】:Output always gives []输出总是给出 []
【发布时间】:2020-01-12 15:13:23
【问题描述】:

我正在尝试通过“averageRating”过滤一些数据。

这是我的方法代码:

filterr(request, respond) {
        var averageRating = request.params.rating;
        var sql = "SELECT * FROM shopreview.shops WHERE averageRating = ?";
        db.query(sql, [averageRating], function (error, result) {
            if (error) {
                throw error;
            }
            else {
                respond.json(result);
            }
        });
    }

当我对我的数据库进行测试时,我的 sql 语句正在运行。但是,我一直得到 [] 作为我的结果。有人可以帮助确定问题所在吗?非常感谢!

【问题讨论】:

  • 在你的 JS 中永远不会有 SQL 查询!
  • 带有双 r 的过滤器?
  • 问题可能是因为我无法将“averageRating”值解析为“?”
  • @NoOorZ24 用户可能在后端使用 JS,我们不知道他们为什么要这样做。这可能只是一个学习练习。我们不要劝阻他们 :) 当您对数据库运行它时,确切的查询是什么?您确定您的代码正在正确/正确地访问您的数据库吗?
  • 使用console.log 调试代码以查看averageRating 的值,可能变量在请求的bodyquery

标签: javascript mysql sql filter


【解决方案1】:

问题是那个“?”因为数据库无法解析它。

或者像这样添加 varageRating 变量:

var sql = "SELECT * FROM shopreview.shops WHERE averageRating = ${parseInt(avarageRating)}";

或者如果你使用的是 couchbase,你可以像这样解析它:

var sql = `SELECT * FROM shopreview.shops WHERE averageRating = $1`;

其中 $1 是变量数组中的第一个变量。

【讨论】:

  • 非常感谢,我从来没想过。
  • 我假设 rating 在 DB 和 request 中都是一个整数。我所做的只是将整数添加到 sql 字符串中。您应该删除该依赖数组,并通过连接“rating =” + avageRating 或像我一样,使用模板文字在 sql 字符串中添加您的平均评分:)
  • 我现在也有类似的错误,但我不确定这次是不是数据类型问题
  • debug debug 调试,总是把你的查询作为字符串 :) 祝你好运
  • 我现在正在工作中休息,但我不想深入私信,因为我不做任何形式的辅导。对不起,伙计。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
  • 2016-12-20
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多