Как указать условие запроса для полей во встроенном / вложенном документе в MongoDB с использованием GraphQL?
В оболочке Монго я легко могу получить документ по
db.users.find({ 'contacts.phone': '8148*****' } ).pretty();
Который принесет мне запись
{
"_id" : ObjectId("5c93c0601a29f5183929c02c"),
"name" : "Athul",
"contacts" : {
"address" : "Some address",
"phone" : "8148*****",
"email" : "***@live.com"
},
"__v" : 0
}
На моем GraphQL Схема Я определил запрос, как указано ниже
...
input ContactsInput {
address: String
phone: String
email: String
}
input userInput {
name: String
contacts: ContactsInput
}
type RootQuery {
users(user: userInput): [User!]!
}
....
Resolver для пользователей -
...
const User = require('../../models/user');
...
users: async args => {
try{
const query = JSON.parse(JSON.stringify(args.user));
const userList = await User.find(query);
if(!userList) {
throw new Error("No user found");
}
return userList;
} catch(err){
throw err;
}
}
...
(работает нормально, если я ищу по названию)
А в GraphiQL я пытаюсь получить ту же запись по приведенному ниже запросу
query{
users(user: {contacts: {
phone: "8148*****"
}}){
name
contacts{
email
phone
}
}
}
, с которой я не могу получить ту же запись.
Потому что на заднем конце его исполняется
db.users.find({ contacts: { phone: '8148405590' } });
, что не эквивалентно
db.users.find({ 'contacts.phone': '8148*****' } );
Не могли бы вы помочь мне решить эту проблему?