Nodejs的行为

时间:2015-08-26 16:13:21

标签: node.js mongodb data-modeling

我一直在研究nodeJS + MongoDB,使用Express和Mongoose框架几个月,我想问你们在以下情况下发生了什么:

(fmap (*) 3)

我最好的猜测是有一个主线程在elems上循环,然后不同的线程在Model2上参与每个查询,但我不太确定。

这是对的吗?而且,这是一个很好的解决方案吗?如果没有,你会如何编写这样的情况,你需要从Model1获得的每个元素中的信息来从Model2获取元素,并执行你正在寻找的实际功能?

我知道我可以详细说明一个更复杂的查询,我可以得到elems中每个'el'的所有元素都会产生,但我宁愿不这样做,因为在那种情况下我会担心记忆费用。

另外,我一直在考虑改变数据模型,但我已经过去了,我很有信心,我认为这是我的应用程序的最佳解决方案。

谢谢!

1 个答案:

答案 0 :(得分:0)

这是最佳解决方案:

Model1.find({}, function (err, elems) {
    if (err) {
        console.log('ERROR');
    } else {
        loopAllElements(0,elems);
    }
});
function loopAllElements(startIndex,elems){
    if (startIndex==elems.length) {
        return "success"; 
    }else{
            Model2.find({[QUERY RELATED WITH FIELDS IN elems[startIndex] ]}, function (err, elems2) {
                if (err) {
                    console.log('ERROR');
                    return "error"; 
                } else {
                    //DO STAFF.
                    loopAllElements(startIndex+1, elems);  
                }
            });
    }
}