node.js - 使查询的参数可选?
问题描述
我正在使用繁琐的 msSqlConnecter。我有一个查询,它根据前端提供的参数进行过滤。我希望参数是可选的,并允许用户不提供它们或只提供两者之一。有没有办法根据 field2 的存在来放置 if 语句?
我收到以下错误:
RequestError:参数“field2”的验证失败。无效号码。
代码:
var thequery1 = `SELECT country
,sales
,[Units Sold] as sold
,thedate
FROM financial
WHERE 1 = 1
AND country = @field1
AND [Units Sold] > @field2`;
Promise.all([queryTablewithPararams(thequery1, req.body.field1, req.body.field2)])
.then(
data => res.json(data)
);
function queryTablewithPararams(thequery1, field1, field2) {
return new Promise(function(resolve, reject) {
var con = new msSqlConnecter.msSqlConnecter(config);
con.connect().then(function() {
new con.Request(thequery1)
.addParam("field1", TYPES.VarChar, field1)
.addParam("field2", TYPES.Int, field2)
.onComplate(function(count, datas) {
resolve(datas);
}).onError(function(err) {
console.log(err);
}).Run();
}).catch(function(ex) {
console.log(ex);
});
});
}
解决方案
只需field2
在作为参数发送之前进行验证
if (isNaN(field2) || field2 == null) { field2 = 0; }
function queryTablewithPararams(thequery1, field1, field2) {
if (isNaN(field2) || field2 == null) { field2 = 0; }
return new Promise(function(resolve, reject) {
var con = new msSqlConnecter.msSqlConnecter(config);
con.connect().then(function() {
new con.Request(thequery1)
.addParam("field1", TYPES.VarChar, field1)
.addParam("field2", TYPES.Int, field2)
.onComplate(function(count, datas) {
resolve(datas);
}).onError(function(err) {
console.log(err);
}).Run();
}).catch(function(ex) {
console.log(ex);
});
});
}
推荐阅读
- reverse-proxy - proxy_pass 和重定向有什么区别?
- google-maps - 是否可以为 GoogleMap 小部件添加不透明度?
- c# - 如何使用 Xamarin 实现我们在谷歌地图和其他应用程序中看到的地址栏
- c++ - C++ 中的 queue.front() 返回一个奇怪的值
- android - 如何根据当月更改照片?
- php - 让我的代码在没有新表的情况下变得更好“某天表”
- javascript - 如何在 html 正文中的 div 之后附加 html 元素?
- list - NullPointerException:无法在 Groovy 中获取空对象的属性“模板”
- php - 如何使用php在表3列中进行foreach循环
- python - 使用 Spacy 模式匹配器的复杂(重复)规则