(RESTFUL api Javascript get函数) 映射中找不到账号如何return 0?

(RESTFUL api Javascript get function) How to return 0 if account is not found in mapping?

我有映射

"balances": {
  "1": "1000",
  "2": "2000",
  "3": "3000",
}

找不到账号怎么办return0?

到目前为止我的代码是

app.get('/GetBalanceByAddress/:id', function (req, res) {
        res.end(JSON.stringify(balances.balances[req.params.id], null, 4));
});

例如,现在 /GetBalance/1 returns 1000

/GetBalance/2 returns 2000

/GetBalance/3 returns 3000

和/GetBalance/4 return没什么。

如何将 /GetBalance/(AnyNonExistentAddress) 设置为 return 0?

你可以包裹在一个 try/catch 块中

app.get('/GetBalanceByAddress/:id', function (req, res) {
  try{
    res.end(JSON.stringify(balances.balances[req.params.id], null, 4));
  });
  }
  catch{
    return 0;
  } 

好的,请使用 try catch 或 if 语句。


app.get('/GetBalanceByAddress/:id', function (req, res) {
  try{
    res.end(JSON.stringify(balances.balances[req.params.id]));
  }
  catch{
    res.end("0");
  } 
});

app.get('/GetBalanceByAddress/:id', function (req, res) {
  if (balances.balances[req.params.id]) {
    res.end(JSON.stringify(balances.balances[req.params.id]));
 
  }
  else {
    res.end("0");
  }  
});

如果您使用的是兼容 ES2020 的浏览器,则可以使用 nullish coalescing operator:

const balances = { "balances": {
  "1": "1000",
  "2": "2000",
  "3": "3000",
}
};

let id = 1;
console.log(balances.balances[id] ?? 0);
id = 4;
console.log(balances.balances[id] ?? 0);