fix(mongo): avoid function_caluse while query returned other types

This commit is contained in:
JianBo He 2020-12-10 15:29:06 +08:00 committed by JianBo He
parent 27d6b73c37
commit 1be1757bbd
1 changed files with 10 additions and 4 deletions

View File

@ -85,10 +85,16 @@ description() -> "Authentication with MongoDB".
is_superuser(_Pool, undefined, _ClientInfo) ->
false;
is_superuser(Pool, #superquery{collection = Coll, field = Field, selector = Selector}, ClientInfo) ->
Row = query(Pool, Coll, maps:from_list(replvars(Selector, ClientInfo))),
case maps:get(Field, Row, false) of
true -> true;
_False -> false
case query(Pool, Coll, maps:from_list(replvars(Selector, ClientInfo))) of
undefined -> false;
{error, Reason} ->
?LOG(error, "[MongoDB] Can't connect to MongoDB server: ~0p", [Reason]),
false;
Row ->
case maps:get(Field, Row, false) of
true -> true;
_False -> false
end
end.
replvars(VarList, ClientInfo) ->