$或mongoose运算符适用于localhost,但不适用于生产

时间:2013-02-15 19:18:52

标签: mongodb mongoose

我刚刚将我的网络应用程序推送到我的prod服务器上,我发现了一个令人惊讶的问题:

var username = 'foo';
var User = this.db.model('User', UserSchema);
User.findOne({ $or: [ { username: username }, { email: { value: username } } ] }, 'id', function(err, Doc) {
  if (err) {
    console.log(err);
  }else if (Doc) {
    console.log('OK');
  }else {
    console.log('Any result');
  }
});

这个完全相同的代码适用于我的本地主机,但不适用于我的prod服务器(我的生产服务器上的else条件和localhost上的else if (Doc)

我在username来电之前打印变量findOne,我手动检查,此用户名确实存在。

如果我放弃$or运算符并仅在username上应用条件,则可行! $or运算符对此负责的证明故障。

我在我的两个环境("mongoose": ">=3.5.4")上以相同的方式更新我的节点模块。

我的mongoDB版本在两种环境中都是相同的:

db version v2.0.4, pdfile version 4.5
git version: nogitversion

我的本​​地主机服务器:ubuntu。 我的prod服务器:debian

我们怎么能解释这个?

1 个答案:

答案 0 :(得分:0)

我已将mongodb升级到我的prod服务器上的v2.2.3并且它可以运行...