NodeJS Express / Mongoose路由混乱

时间:2014-02-20 20:34:01

标签: node.js express mongoose

我不能在这里正确理解。我的路线看起来像这样

function(req,res){
      var thingId = validate.thingId(req.body) ? req.body.thingId  : res.send(400,'Invalid Thing');

      var newBlock = new Block({
           thing : mongoose.Types.ObjectId(thingId)
      }).save();
 }

我在req.body.thingId中传入一个空字符串来测试验证函数。它应该返回false,服务器应该返回400错误,但是我收到了错误 “传入的参数必须是12个字节的单个字符串或24个十六进制字符的字符串。” (它在谈论模型ID)。

很明显,newBlock仍然被创建,而thingId正被传递到mongoose.Types.ObjectId函数中。

我的(可能是错误的)印象是调用res.send基本上就像'return'和代码之后就不会运行了。我无法看出这可能是一个异步问题,有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

问题是res.send()不会从函数返回执行。您应该使用代码块并在验证失败时返回。

答案 1 :(得分:0)

我做了user3334561所说的,这很有用。

   var thingId;

   if (validate.thingId(req.body)) thingId = req.body.thingId;
   else return res.send(400,'Invalid Thing');