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私のprodサーバーでにアップグレードしました、そしてそれは動作します...

于 2013-02-16T08:53:27.070 に答える