2016-02-09 73 views
0

我正在尝试构建一个同步猫鼬查找。我采用了deasync。 https://www.npmjs.com/package/deasyncMongoose synchronousFind

目前这个工作可以节省,但它不工作进行查询

exports.synchronousFind = function (instanceModel, query) { 
    var ready = false; 
    var result = null; 
    instanceModel.find(query, function (err, tenantUser) { 
     ready = true; 
     if (err) { 
      console.log(err); 
     } else { 
      result = tenantUser; 
     } 
    }); 

    while (ready === false) { 
     require('deasync').runLoopOnce(); 
    } 
    return result; 
} 

的这部分代码

while (ready === false) { 
    require('deasync').runLoopOnce(); 
} 

只是挂永远并最终经过。有没有人有任何想法?

+0

While循环就像是太快了,当它到达那里,它会经历一个亿的循环时间现在是正常工作,所以基本上你是通过一个while循环阻止整个过程,这是非常非常错误的。 –

+0

这就是我想的。之前使用deasync我有一个疯狂的循环,基本上阻止了一切。该框架应该克服这个问题 – CodeMilian

+0

我刚刚改变了我的代码,并且它似乎正在工作require('deasync')。loopWhile(function(){return!ready;}); – CodeMilian

回答

0

我改变了我的代码,这和预期

exports.synchronousFind = function (instanceModel, query) { 
    var ready = false; 
    var result = null; 
    instanceModel.find(query, function (err, tenantUser) { 
     ready = true; 
     if (err) { 
      console.log(err); 
     } else { 
      result = tenantUser; 
     } 
    }); 

    require('deasync').loopWhile(function(){return !ready;}); 

    /*while (ready === false) { 
     require('deasync').runLoopOnce(); 
    }*/ 
    return result; 
}