为什么水线callback不会触发?

我正在使用模型中的Sails,它是ORM来执行MongoDB查询和操作。 我得到的问题是,对于一些查询方法,它的callback是永远不会被调用。 数据库操作完成,但callback不会出现。 下面的代码片段是模型查询API的控制器方法的一部分,这就是为什么我使用response对象。

  LineUp.update({ id: request.param('id') }, { players: [], budgetLeft: 60000000 }). exec(function (err, lineup) { console.log("Should happen"); return err ? response.send(500) : response.json(lineup); }); 

所以,我已经阅读了Sails文档 ,看来我实际上是按照它应该做的,但是它不会工作。

由于不工作,我的意思是callbackist没有被执行,我永远不会看到应该发生 ,然后任何响应被发回到客户端,客户端达到502超时。

编辑

我可以注意到,发现这是一个sails-mongo问题。

我在package.json首先使用了"sails-mongo": "^0.10.6"作为依赖项,并且在前一版本中获得了mongodb作为dev依赖项。

我testing了邮递员的整个代码,我不能注意到任何问题。 npm安装运行后,我开始注意到它失败,然后我发现这是callback问题。

^0.11.2 sails-mongo更新到^0.11.2我可以看到它是如何回报增益的。 但是,我可以看到其他模型查询时,它不工作。

在升级服务器(可悲的是不工作),当它失败了,我有帆mongo ^0.10.82.0.33模块。 我更新到最新版本,特别是sails-mongo到0.11.x分支。

真的不仅需要解决这个问题,而且要知道原因。 我试图复制错误,但现在它正在工作,而不是两天。

编辑2(语法错误或错误?)

我不能通过尝试不同的模块版本来复制错误。 但是,也奇怪,我已经确定哪个代码风格不工作(没有callback发生)。

没有执行callback,导致超时:

  LineUp.update({ id: request.param('id') }, { players: [], budgetLeft: 60000000 }) .exec(function(err, lineup) { return err ? response.send(500) : response.json(lineup)}); 

反对,下面这个版本的简单的结账将使其工作:

正常工作,callback执行,然后任何超时,但正常的服务器响应:

  LineUp.update({id: request.param('id')}, { players: [], budgetLeft: 60000000 }). exec(function (err, lineups) { console.log("Happens"); console.log(lineups); return err ? response.send(500) : response.json(lineups); }); 

但是,呃, 他们不一样!

可能的错误 。 我在github上提交这个问题

编辑3发现失败时。

这实际上会进行修改时会失败。

因此,无论何时进行匹配,即使对数据库进行修改,callaback也不会被触发。 如果找不到更新,则执行callback。

我已经在package.json中使用mongodb模块testing了这个版本,其中包含0.11.2,0.10.6和0.10.8版本的sails-mongo,并find相同的问题。