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
.
それをどのように説明できますか?