我刚刚将我的网络应用程序推送到我的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
。
我们怎么能解释这个?
答案 0 :(得分:0)
我已将mongodb升级到我的prod服务器上的v2.2.3
并且它可以运行...