sql >> Base de Datos >  >> NoSQL >> MongoDB

Usando wait.for con nodejs y mongoskin para evitar el infierno de devolución de llamada

No estoy familiarizado con CoffeeScript, corrígeme y editaré esta respuesta.

all: (req,res)->
    var result = wait.forMethod(@em.collection(@collection).find(), "toArray")
    roadmaps = []
    for r in result
        r.user = @getUser(r.user.oid)
        roadmaps.push r
    res.send(roadmaps)



 getUser: (oid)->
    try
      return wait.forMethod(@em.collection('user'),"findOne",{_id:new @objectId(oid)})
    catch(err)
      return undefined

Como puede ver, para "getUser", si el método es así de simple, es mejor que use su versión, con la devolución de llamada.

"¿dónde poner el launchFiber()?"

pones el launchFiber cuando llega una solicitud. consulte https://github.com/luciotato/waitfor#proper-use