我的graphql设置文件如下所示
app.use((req, res, next) => {
logger.entry('info', req); //LOG HERE - It's the first ever middleware
next();
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static('public'));
app.use('/graphql',
authMiddleware,
apolloUploadExpress({
uploadDir: path.resolve(__dirname, 'public', 'img'),
}),
graphqlExpress(req => ({
schema: executableSchema,
context: {
...req.user,
connection: {
remoteAddress: req.connection.remoteAddress,
},
headers: {
...req.headers,
},
postLoader: new DataLoader(keys => batches.batchPosts(keys, req)),
commentLoader:new DataLoader(keys => batches.batchComments(keys, req)),
commentCommentLoader: new DataLoader(keys => batches.batchComments(keys, req, true)),
imageLoader:new DataLoader(keys => batches.batchPostImages(keys, req)),
hashTagLoader:new DataLoader(keys => batches.batchPostHashTags(keys, req)),
postLikableLoader:new DataLoader(keys => batches.batchPostLikables(keys, req)),
postDislikableLoader:new DataLoader(keys => batches.batchPostLikables(keys, req, false)),
postFactcheckLoader:new DataLoader(keys => batches.batchFactcheckables(keys, req)),
postFollowingLoader: new DataLoader(keys => batches.batchPostFollowing(keys, req)),
commentLikeableLoader:new DataLoader(keys => batches.batchCommentLikable(keys, req)),
commentDislikeableLoader:new DataLoader(keys => batches.batchCommentLikable(keys, req, false))
},
formatError,
})));
我已经正确配置了数据加载器并且可以正常工作。但是,该请求仍然花费太长时间,无法加载仅14个简单文本的帖子,因此我尝试记录请求的条目,结果显示以下内容
2018-08-13T19:07:07.091Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.102Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.108Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.111Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.111Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.111Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.113Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.114Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.115Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.115Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.115Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.118Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.121Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.121Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.121Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.124Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.127Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.127Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.127Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.127Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.130Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.130Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.131Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.131Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.133Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.133Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.134Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
2018-08-13T19:07:07.134Z [ info ] #ENTRY# IP:127.0.0.1 Route:undefined AuthToken:undefined RefreshToken:undefined
对于我尝试实现的单个请求,我收到了30多个请求。我认为这是架构嵌套问题;但是,即使我删除了所有我的除ID之外的所有字段请求,因此绝对只需要一个请求,但我仍然有28个请求到达服务器。看来这根本不正常,我认为如果我减少这些不必要的请求,我的服务器的速度将大大提高。有人可以帮我还是指导我正确的方向?
下面是一个仅导致一个字段请求而导致20多个请求的示例。
import gql from 'graphql-tag';
export default gql`
query paginatePosts($count:Int, $after:String){
paginatePosts(count:$count, after:$after){
id
}
}
`