fea*_*ure 5 node.js async-await apollo graphql next.js
使用 next.js 示例api-routes-apollo-server-and-client。当我尝试以apollo/resolvers.js这种方式实现延迟时:
export const resolvers = {
Query: {
viewer (_parent, _args, _context, _info) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve({ id: 1, name: 'John Smith', status: 'cached' });
}, 1000);
})
}
}
}
Run Code Online (Sandbox Code Playgroud)
这在 SSR 中不起作用。SSR apollo 状态下数据为空,但需要用户数据{ id: 1, name: 'John Smith', status: 'cached' }。
我也在 sequelize 中使用它从数据库中获取数据,但它也不起作用。我想原因是一样的。
也许我做错了什么。
客户端部分工作正常(反应水化后显示数据)。
如果我们使用静态对象而不是 Promise:
export const resolvers = {
Query: {
viewer (_parent, _args, _context, _info) {
return { id: 1, name: 'John Smith', status: 'cached' };
}
}
}
Run Code Online (Sandbox Code Playgroud)
一切正常,这将对象置于从具有正确静态标记的 SSR 服务器返回的初始状态...
我在期待什么?
我只想服务器渲染 graphql 要求,完成承诺,将数据置于阿波罗状态以供 SSR 使用,并为 SEO 目的执行 SSR。因为现在如果我连接到数据库 - 它根本不起作用(什么都没有呈现。只是空页面,因为呈现被某些东西打断了)。
您的代码完全正确,并且 SSR 没有问题。我在 CSR 和 SSR 模式下使用 next.js 示例api-routes-apollo-server-and-client测试您的代码。对于 SSR 测试,首先运行npm run build,然后npm start. 如果您的问题没有解决,请尝试更新node.js并重新下载示例代码并再次测试它。
| 归档时间: |
|
| 查看次数: |
3384 次 |
| 最近记录: |