我正在学习Node.js,我正在尝试创建一个购物清单应用程序,我正在尝试实现一个搜索路由,它检查查询是否与val匹配,这里是代码
if
现在问题出在response.send
路由的<div class="lastSearch" style="display:none">
<input type="hidden" data-field-no="193" data-value="asd">
<input type="hidden" data-item-type="1" data-item-no="12">
</div>
条件,我知道我得到错误的原因是因为我无法使用<div class="divBody">
<label style="top:113.6px;left:32px;width:86.4px;height:12.8px;" data-field-no="190">ID</label>
<label style="top:67.2px;left:32px;width:86.4px;height:12.8px;" data-field-no="191">Ime</label>
<label style="top:20.8px;left:32px;width:86.4px;height:12.8px;" data-field-no="192">Tekst</label>
<input style="top:19.2px;left:123.2px;width:152px;height:16px;" data-field-no="193" id="input-0" type="text" data-param-type="0" value="">
<input style="top:65.6px;left:123.2px;width:152px;height:16px;" data-field-no="194" id="input-1" type="text" data-param-type="0" value="">
<input style="top:112px;left:123.2px;width:152px;height:16px;" data-field-no="195" id="input-2" type="number" data-param-type="1" value="">
</div>
两次,我正在寻找根据条件是否满足发送任一响应的方法。
任何帮助表示赞赏
感谢
答案 0 :(得分:1)
将response.send('Not found')
移到循环之外。此外,您不应在此使用Array.map
,而是使用Array#find
:
app.get('/search', function(request, response) {
let foundVal = list.find(function(val) {
if (request.query.search === val) {
return val;
}
});
if (foundVal) {
return response.send('Yup you got: ' + foundVal);
}
response.send('Not found');
});
答案 1 :(得分:1)
使用回调构建您的结构。
app.get('/search', function(request, response){
checkValue(list,request.query.search,function (result) {
response.send({
data : result
});
});
function checkValue(list, value, callback) {
var isHere = false;
list.map(function(val){
if(request.query.search === val){
isHere = true;
}
});
callback(isHere);
}
});
答案 2 :(得分:0)
在这段代码中:
app.get('/search', function(request, response){
return list.map(function(val){
if(request.query.search === val){
return response.send('Yup you got ' + val);
}
response.send('Not found')
});
});
您在response.send()
回调中正在.map()
,这意味着您可以轻松地多次调用它,而您询问的错误表明您多次调用它。请注意,return
中的.map()
不会突破.map()
。它只从回调函数的迭代返回,然后在.map()
之后继续return
的下一次迭代。
如果你想要突破迭代,那么切换到常规的for
循环进行迭代(不使用回调)然后你的return
会做你想要的这样:
app.get('/search', function(request, response){
for (let val of list) {
if (request.query.search === val){
return response.send('Yup you got ' + val);
}
}
response.send('Not found')
});