- asyncData 运行在服务器中,不可以用ajax请求,本来就在服务器中运行,也不需要ajax。
- 在entry-server.js中也不能require mongo数据库,
- 那应该在哪来执行mongodb的查询命令,把数据给asyncData中?
- 难道在渲染页面前,把数据放到context中?
const baseRender = async function(ctx, next){
let context = {url: ctx.request.url};
let htmlStr = await new Promise((resolve, reject) => {
renderer.renderToString(context, (err, html) => {
if (err) {
reject(err)
}
resolve(html);
});
}).catch(e => {
console.error(e);
return e;
});
if (htmlStr.code && htmlStr.code === 404) {
await next();
} else {
ctx.body = htmlStr;
}
}
在asyncData中做请求,不过不是用ajax,是使用node中的http,可以直接axios库,兼容浏览器和 node.js