0

我刚刚在我的产品服务器上推送了我的 Web 应用程序,我发现了一个令人惊讶的问题:

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');
  }
});

这个完全相同的代码适用于我的本地主机,但不适用于我的产品服务器(我进入else生产服务器和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. 我的产品服务器:debian.

我们怎么解释呢?

4

1 回答 1

0

我已将 mongodb 升级到v2.2.3我的产品服务器上,它可以工作......

于 2013-02-16T08:53:27.070 回答