gpt4 book ai didi

node.js - Next.JS:带有 Promise 的解析器在 SSR 上的 api-routes-server-and-client-test 中不起作用

转载 作者:行者123 更新时间:2023-12-02 18:42:06 25 4
gpt4 key购买 nike

使用 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);
})
}
}
}

enter image description here

这在 SSR 中不起作用。 SSR apollo 状态下数据为空,但需要用户数据{ id: 1, name: 'John Smith', status: 'cached' }

我也将其与sequ​​elize一起使用来从数据库中获取数据,但它也不起作用。我想原因是一样的。

也许我做错了什么。

客户端部分工作正常(React水合后显示数据)。

如果我们使用静态对象而不是 Promise:

export const resolvers = {
Query: {
viewer (_parent, _args, _context, _info) {
return { id: 1, name: 'John Smith', status: 'cached' };
}
}
}

一切正常,这会将对象置于从 SSR 服务器返回的初始状态,并具有正确的静态标记...

enter image description here

我在期待什么?

我只想服务器渲染 graphql 请求,完成 promise ,将数据放入 apollo 状态以进行 SSR,并出于 SEO 目的执行 SSR。因为现在如果我连接到数据库 - 它根本不起作用(没有渲染任何内容。只是空页面,因为渲染被某些东西中断了)。

最佳答案

您的代码完全正确,并且 SSR 没有问题。我用 next.js 示例 api-routes-apollo-server-and-client 测试您的代码在CSR和SSR模式下。对于 SSR 测试,首先运行 npm run build,然后运行 ​​npm start。如果您的问题没有解决,请尝试更新node.js并重新下载示例代码并再次测试它。

关于node.js - Next.JS:带有 Promise 的解析器在 SSR 上的 api-routes-server-and-client-test 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58617398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com