vue ssr如何在asyncData中获取数据库数据

  1. asyncData 运行在服务器中,不可以用ajax请求,本来就在服务器中运行,也不需要ajax。
  2. 在entry-server.js中也不能require mongo数据库,
  3. 那应该在哪来执行mongodb的查询命令,把数据给asyncData中?
  4. 难道在渲染页面前,把数据放到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;
    }
    
}
阅读 4.9k
1 个回答

在asyncData中做请求,不过不是用ajax,是使用node中的http,可以直接axios库,兼容浏览器和 node.js

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题