使用用户输入返回posgreSQL数据库记录

时间:2019-07-14 07:49:39

标签: node.js postgresql express

我的Node/express应用程序中遇到了阻止程序。

我想从 postgresSQL 数据库表中返回数据,但是要通过用户传递的查询参数来完成此操作...

假设以下内容:

  • db是一个postgresSQL数据库池连接。

  • 旅行表已经创建,并填充了以目标值为“尼日利亚” 的旅行。

下面是我的模型和控制器代码。

model.js

const getTrips = async ( column, value )=> {
  const query = 'SELECT * FROM trips WHERE $1 = $2';

  const { rows } = await db.query ( query, [value] );

  return rows;
}

controller.js

const getTrips = async ( req, res) => {
  const { destination } = req.query;

   const result = await Trips.getTrips( 'destination' destination );

   console.log( result.length )
}

问题面对

Url = http://.../?destination="Nigeria"

当我直接从用户传递destination查询参数时,就像Trips.getTrips('destination', destination )一样,将返回一个空数组。

但是,如果传递了与查询参数值等效的字符串,例如Trips.getTrips('destination', 'Nigeria'),则将返回一个Trips与尼日利亚匹配的数组作为目的地。

检查已经完成

  • console.log(typeof destination) // returns string.

  • console.log (destination) // returns "Nigeria"

问题

  1. 为什么直接传递参数不返回适当的记录,而传递其等效字符串返回适当的记录?

1 个答案:

答案 0 :(得分:1)

尝试删除URL查询(Url = http://.../?destination=Nigeria)中的引号。似乎您是从字面上查询"Nigeria"(包括引号)。这有帮助吗?