Mongoose 5.3.3 - Запрос псевдонимов на простых полях работает как задумано.
Ex.
const userSchema = new Schema({h:{alias:"handle",type:String}});
const User = model("User",userSchema);
const user = new User({handle:"Jack"});
const query = {handle:"Jack"};
const users = await User.find(User.translateAliases(query));
console.log(users);
// prints [{...,handle:"Jack",...}]
Но для вложенных реквизитов, каждый из которых имеет псевдонимы, запрос выполняется только при использовании псевдонимов полей без псевдонимов.
Ex.
const userSchema = new Schema({
n:{alias:"name",type:{
f:{alias:"first",type:String},
l:{alias:"last",type:String}}}});
const User = model("User",userSchema);
const user = new User({name:{first:"Jack",last:"Swift"}});
const query1 = {"name.first":"Jack"};
const query2 = {name:{first:"Jack"}};
const query3 = {"name.f":"Jack"};
const query4 = {"n.f":"Jack"};
const users1 = await User.find(User.translateAliases(query1));
const users2 = await User.find(User.translateAliases(query2));
const users3 = await User.find(User.translateAliases(query3));
const users4 = await User.find(User.translateAliases(query4));
console.log(users1,users2,users3,users4);
// prints [],[],[],[{...name:{first:"Jack,last:"Swift"}...}]
Я также попробовал оба варианта: 1) использование полного пути в строке в объявлении схемы
alias:"name.first"
вместо "first" и 2) превращение свойства name в отдельную схему.
const nameSchema = new Schema({f:{alias:"first"...
const userSchema = new Schema({n:{alias:"name",type:nameSchema}});
Без кубиков. Я хочу верить, что команда Mongoose наверняка думала, что люди будут вкладывать псевдонимы, поэтому давайте сделаем больше, чем просто запрос на верхнем уровне, конечно, это я, лол. Может кто-нибудь бросить решение здесь, это сводит меня с ума.