ループバックモデルのJSファイルでクエリを作成しようとしています。それは次のように非常に簡単です:ループバックで同じ 'find'クエリが実行され、mongoは異なるサーバーで異なる動作をします
//isAdmin function: gets a boolean if a given userProfileId is an admin or not.
Userprofile.isAdmin = function(userProfileId, cb) {
let role = app.models.Role;
let rolemapping = app.models.RoleMapping;
let filter = {
"where": {
"name": "admin"
},
"fields": ["id"]
};
role.findOne(filter, function(err, instance) {
let filter2 = {
"where": {
"roleId": instance.id
,
"principalId": userProfileId,
},
"fields": ["id"]
};
rolemapping.find(filter2, function(err, instance) {
if (instance != "") {
cb(null, true);
} else {
cb(null, false);
}
});
});
};
私たちの開発サーバーでこれは完全に動作します。問題は、私たちの本番サーバである
ObjectID { _bsontype: 'ObjectID', id: 'Xï¾ù·>Vi3 }
:そのサーバーが返すにおけるfilter2
のconsole.log
、:ようinstance.id
の
{ where:
{ roleId: 5890ef8bbef9b73e568c6933,
principalId: '5890ef8bbef9b73e568c6932' },
fields: [ 'id' ]
}
}
console.log
が見えます。私は、展開プロセスを行った結果はわずかに異なっているが、それがすべてでは動作しません:(
をconsole.log
filter2
のリターン:。
{ where:
{ roleId: 58921dff16d9a37009e21104,
principalId: '5890ef8bbef9b73e568c6932' },
fields: [ 'id' ] }
}
そして、console.log(instance.id)
リターン:
ObjectID { _bsontype: 'ObjectID', id: Buffer [ 88, 146, 29, 255, 22, 217, 163, 112, 9, 226, 17, 4 ] }
DBにクエリを満たすドキュメントがあっても、本番サーバーのこのクエリはドキュメントを返しません。
私はすべてのnpmパッケージを比較しましたが、まったく同じバージョンです。サーバ(Debian 8を使用しています)とmongo(v3.2.10)も同様です。
これを解決するためのアイデアはありますか?
ありがとうございます!
ペドロ。
はい、それが問題です!どうもありがとう! – pleivac