迭代时请求变为“未定义”

时间:2015-10-08 14:39:04

标签: node.js coffeescript

这是一个奇怪的事实。在我的API REST中,我正在处理一个特定的部分,它需要一个对象数组,每个对象都包含在特定项目的代码(_id)和其他内容中,但重要的是_id。

很酷,该对象是通过RAW请求发送的,它看起来像是:

"items": [{ "code": "item-code-001", ... }]

我使用 nodejs,express和coffeescript 来工作,所以,我的代码是:

client     = req.body["client_data"]
items      = req.body.items


for i in items
      Item.findOne()
        .where '_id'
        .equals i.code
        .exec (err, item) ->
          if err
            res.json new Internal(err.stack, err.message)
          else if not item
            res.json new NotFound("No existe #{i.code}, y es requerido")
          else if item.existencia < i.cantidad
            res.json new Forbidden("Cantidad #{i.cantidad} supera a la existencia")
          else
            next()

关于这一切的奇怪之处在于,当我进行这些迭代时,告诉我他无法读取未定义的“代码”属性。

很奇怪,因为当我记录“items”时,它返回完整的数组,而coffeescript的for in循环取值而不是索引,因此i不是索引而是值:console.log i // {"code": "item-code-1", ...}

有什么想法吗?看着咖啡文档我不会得到我的错误,并且在独立的小测试中代码运行良好(使用普通的对象数组)。

0 个答案:

没有答案