[英]Scope of variables and changing the global variable in node
我在函数中有一个if-else块。 结果取决于q的值。 如果q的值是“定义明确的查询”(例如:localhost:1235 / docs / q?beaven),则应打印4。 q = {}(例如:localhost:1235 / docs),结果应将code
和message
作为其属性(具有各自的值)并作为JSON传递。
但是,这没有发生。 我搞砸了范围。 输出为: ""
function doSearch(app){
return errorWrap(async function(req, res) {
const q = req.query || {};
try {
// let results = await app.locals.finder.find(q);
let results = "";
// console.log(q);
if(q === {}){
results = {
code: "BAD_PARAM",
message: "required query parameter \"q\" is missing"
};
res.json(results);
// results = await app.locals.finder.find(q);
}else{
results == 4;
res.json(results);
}
}
catch (err) {
const mapped = mapError(err);
res.status(mapped.status).json(mapped);
}
});
}
if (q === {})
永远不会为真,因为===
测试两者是否是完全相同的对象(如果它们具有相同的属性,则不是),在这里永远不会如此,因为q
和{}
总是不同的对象。
您可能需要测试q
上是否存在特定属性。 或者您可以测试if (Object.keys(q).length === 0)
来查看q
是否为空对象。 但是,我认为可能最适合您的代码的是查看您在q
上寻找的特定属性是否存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.