问题:
查询非常慢(至少需要1分钟),因为它会针对我从const PRESET_EXTENSIONS = ['.json', '.js'];
类型获得的每个message
运行。
代码:
我想实现以下查询
messages
我有以下几种类型
messages(contactID:211375){
text
kids{
name
}
}
然后messages: {
type: new GraphQLList(MessageType),
args: {contactID: {type: GraphQLID}},
resolve(parent, args){
let query = `SELECT *
FROM messages_mapping INNER JOIN messages ON messages_mapping.message_id=messages.id
WHERE messages_mapping.contact_id=`+args.contactID;
let result = db.get(query).then(function(response){
return response.map((message)=>{
return MessageTypeObj(message);
});
}).catch(function(err){
console.log(err);
});
return result;
}
像这样解析MessageType
:
kids
可能的解决方案:
我读过关于将查询批处理为一个查询的知识,并且我了解kids: {
type: new GraphQLList(StudentType),
resolve: (parent,args, context) => {
let query = `select *
from students
where id in
(select distinct student_id from messages_mapping where message_id=`+parent.id+` AND contact_id=`+context.contact_id+`)`;
let result = db.get(query).then(function(response){
return response.map((student)=>{
return StudentTypeObj(student);
});
}).catch(function(err){
console.log(err);
});
return result;
}
}
和dataloader
,但是我不确定如何在我的情况下实现。