如何批处理GraphQL Express查询

时间:2019-11-06 09:07:01

标签: graphql apollo graphql-js express-graphql

问题:

查询非常慢(至少需要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,但是我不确定如何在我的情况下实现。

0 个答案:

没有答案