我刚刚在我的产品服务器上推送了我的 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
.
我们怎么解释呢?