在Node JS中使用SELECT进行动态查询



我将很快解释我的问题。我必须在数据库中选择关于更多服务的价格。

我正在传递一个服务ID数组,并且我正在使用SELECT查询来获取有关它的所有信息。

let serviceIDSplitted = ServicesID.split(','); // To split the service id
var tokens = new Array(serviceIDSplitted.length).fill('?').join(','); // To generate the ?
let appointmentGetPriceQuery = `SELECT ServicePrice, ServiceDuration FROM SalonService WHERE PlaceID = ? AND ServiceID IN (${tokens});`; // The query

查询很好,因为如果我尝试使console.log()打印良好,但当我尝试执行它时,我遇到了这个问题:

"SELECT ServicePrice, ServiceDuration FROM SalonService WHERE PlaceID = 'x' AND ServiceID IN ('1', 'e12204d6abf65c509d310057681b6a1a',?);"

我试着调试,主要问题是:我有2个服务+ 1个PlaceID,它会把查询4 ?而不是3我有3个服务+ 1个PlaceID,它会把查询5 ?而不是4

调试"tokens"改变?

我怎样才能解决这个问题?

你可以这样做:

let serviceIDSplitted = ServicesID.split(','); // To split the service id
let len = serviceIDSplitted.length === 1 || serviceIDSplitted.length === 0 ? 1 : serviceIDSplitted.length -1;
var tokens = new Array(len).fill('?').join(','); // To generate the ?
let appointmentGetPriceQuery = `SELECT ServicePrice, ServiceDuration FROM SalonService WHERE PlaceID = ? AND ServiceID IN (${tokens});`; // The query

现在,您可以确定如果没有serviceId或1,您可以很好地填充您的查询。

最新更新