这是一个奇怪的事实。在我的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", ...}
。
有什么想法吗?看着咖啡文档我不会得到我的错误,并且在独立的小测试中代码运行良好(使用普通的对象数组)。