sql >> データベース >  >> NoSQL >> MongoDB

コールバック地獄を回避するためにnodejsとmongoskinでwait.forを使用する

    CoffeeScriptに慣れていないので、訂正してください。この回答を編集します。

    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
    

    ご覧のとおり、「getUser」の場合、メソッドが非常に単純な場合は、コールバックを使用してバージョンを使用することをお勧めします。

    「launchFiber()をどこに置くか?」

    リクエストが到着したときにlaunchFiberを配置します。 https://github.com/luciotato/waitfor#proper-use を参照してください




    1. Node.js、WebSocket、Redisを使用してResqueの使用状況を視覚化する方法

    2. MongoDBforSaaSの複数のデータベース

    3. MongoDb C#GeoNearクエリ構築

    4. Mongo DB、PHPは、ドキュメントのフィールドを追加または更新します