【问题标题】:$or mongoose operator works on localhost but not on production$or mongoose 运算符在本地主机上工作,但不适用于生产环境
【发布时间】:2018-09-27 11:44:25
【问题描述】:

我刚刚将我的 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))。

我在findOne 调用之前打印了我的变量username,然后我手动检查,这个用户名确实存在。

如果我删除 $or 运算符并仅在 username 上应用条件,它会起作用!这证明了 $or 运算符应对此失败负责。

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

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

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

我的本​​地服务器:ubuntu。 我的产品服务器:debian。

我们该如何解释呢?

【问题讨论】:

  • 您的生产服务器上的 MongoDB 版本是什么?
  • 两者相同:db version v2.0.4, pdfile version 4.5 git version: nogitversion
  • 第二行的'id' function... 部分是怎么回事?错字?
  • 是的,抱歉,这里忘记了“,”,但我的原始代码中没有。

标签: mongodb mongoose


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-06-12
    • 2020-04-21
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2018-08-01
    • 1970-01-01
    相关资源
    最近更新 更多