node.js - mongoose让异步返回值后再执行后续代码
大家讲道理
大家讲道理 2017-04-17 15:46:25
0
1
355

用mongoose查询到多个结果,一起处理后再传给前端页面。
但mongoose提供的回调异步执行,在还没返回时就已经执行到后续代码。
有什么方法能处理吗?

在网上查到,mongoose内置了一个promise,但好像又有说后面已经被取消了?
如果要引入其他组件,有没有什么与mongoose容易配合起来的?目前用的是express4+mongoose。

代码:

    imuser.findOne({"id": arg.id}, function(err, data){ 
    //查询当前用户信息
        if(err) return handleError(err);

        imcontact.find({"id": arg.id}, function(err, docs){ 
        //查询当前用户的联系人id 最后一条信息记录
            if(err) return handleError(err);
            
            for(x in contact){
                imuser.findOne({"id": contact[x].contactid}).exec(function(err, data){ 
                //因为联系人详细信息存在imuser中,所以循环查询每个联系人,然后加入变量中
                });
            }
            //异步问题 会先输出信息
            //输出当前用户信息  和用户联系人的详细信息
            res.render('view', {"info": data, "toinfo": contact});

        })
    });
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(1)
黄舟

코드를 읽은 후 for in이 끝난 후 프런트 엔드까지 렌더링해야 한다고 생각합니다. 그런 다음 for in에 렌더링을 작성하고 플래그를 사용하여 마지막 이후에 렌더링해야 합니다. 루프 맞습니다. 올바르게 이해했다면 접촉 변수가 보이지 않은 것입니다. 객체입니까 아니면 배열입니까?

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿