JSON url无法捕获空错误

时间:2017-08-23 00:29:23

标签: javascript json node.js server

我使用服务器javascript文件,JSON数据和节点服务器在Atom中编程!

 var fs = require('fs');
 var dataP = fs.readFileSync('database.json');
 var data = JSON.parse(dataP);
 var express = require('express');
 var app = express();
 var server = app.listen(3000);

 app.use(express('website'));
 app.get('/check/:input', addInput);

 function addInput(request, response){
 var inputData = request.params.input;
 if(!inputData){
          response.send("Error: no input was found");
      }
 }

所以我让运行我的服务器的终端进入 nodemon server.js 当我测试网址代码@ localhost:3000 / check 时,它不会捕获错误我写的消息错误:没有找到输入我觉得很奇怪,因为如果我假设正确,它是一个空输入。我还尝试更改if语句并添加:

 if(!data && data == null)

 //Also tried

 if(!data || data == null)

这些陈述似乎都无法捕捉到错误。我从服务器返回的消息是:无法获取/检查/

 //if I add a ? at the end of input like this

 app.get('/check/:input?');

我会收到一条消息:内部服务器错误

是否有其他解决方案来处理捕获错误?我尝试调试这个,但它会跳过 app.get 行,然后我无法查看要检查的变量。

1 个答案:

答案 0 :(得分:0)

我在文档中找不到它,但经过几次尝试后,我能够使用路线/check/:input*?使其工作(请注意星号和问号)。

这是我的代码:

const express = require('express');
const app = express();
const server = app.listen(3000);

app.use(express('website'));

app.get('/check/:input*?', (req, res) => {
    const { input } = req.params;
    if (!input) {
        res.send('Value not specified!');
    } else {
        res.send(`Value was "${input}", woohoo!`);
    }
});
  • 访问/check打印Value was not specified
  • 访问/check/winning打印Value was "winning", woohoo!

我测试了节点8.4.0并在一个新项目中表达了4.15.4。上面的代码应该在节点6.7+中工作,并且据我所知可以表达4.0+。

请参阅解决同一问题的this answer