Javascript 如何在nuxt.js ssr中将数据从node.js传递到vue?

Javascript 如何在nuxt.js ssr中将数据从node.js传递到vue?,javascript,node.js,firebase,google-cloud-functions,nuxt.js,Javascript,Node.js,Firebase,Google Cloud Functions,Nuxt.js,我想将firestore数据从Node.js(Express)传递到vue文件。因为我必须使用firestore的getCollections()方法。它不能在客户端运行 我构建nuxt ssr来部署google云功能和云托管。我 请参阅本文。() 这个目录结构如下所示 const functions = require('firebase-functions') const express = require('express') const { Nuxt } = require('nuxt'

我想将firestore数据从Node.js(Express)传递到vue文件。因为我必须使用firestore的
getCollections()
方法。它不能在客户端运行

我构建nuxt ssr来部署google云功能和云托管。我 请参阅本文。() 这个目录结构如下所示

const functions = require('firebase-functions')
const express = require('express')
const { Nuxt } = require('nuxt')

const app = express()

const config = {
  dev: false,
  buildDir: 'nuxt',
  build: {
    publicPath: '/'
  }
}
const nuxt = new Nuxt(config)

function handleRequest(req, res) {
  res.set('Cache-Control', 'public, max-age=600, s-maxage=1200')
  nuxt.renderRoute('/').then(result => {
    res.send(result.html)
  }).catch(e => {
    res.send(e)
  })
}

app.get('*', handleRequest)
exports.nuxtApp = functions.https.onRequest(app)
  :
function handleRequest(req, res) {
  res.set('Cache-Control', 'public, max-age=600, s-maxage=1200')
  **req.data = "some data from firestore"**
  nuxt.renderRoute('/', **{ req }** ).then(result => {
    res.send(result.html)
  }).catch(e => {
    res.send(e)
  })
}
  :
---公共(部署到云主机)
|
|-src(
numxt build
to functions目录)
|
|-功能(具有Node.js和部署到云的功能)
|
|-firebase.json
:

我想我的目的可以通过函数dir中的index.js实现。它看起来像下面

const functions = require('firebase-functions')
const express = require('express')
const { Nuxt } = require('nuxt')

const app = express()

const config = {
  dev: false,
  buildDir: 'nuxt',
  build: {
    publicPath: '/'
  }
}
const nuxt = new Nuxt(config)

function handleRequest(req, res) {
  res.set('Cache-Control', 'public, max-age=600, s-maxage=1200')
  nuxt.renderRoute('/').then(result => {
    res.send(result.html)
  }).catch(e => {
    res.send(e)
  })
}

app.get('*', handleRequest)
exports.nuxtApp = functions.https.onRequest(app)
  :
function handleRequest(req, res) {
  res.set('Cache-Control', 'public, max-age=600, s-maxage=1200')
  **req.data = "some data from firestore"**
  nuxt.renderRoute('/', **{ req }** ).then(result => {
    res.send(result.html)
  }).catch(e => {
    res.send(e)
  })
}
  :
我应该如何更改此代码?请给我你的智慧。

我有答案

numxt.renderRoute()
可以将参数中的数据作为可选参数传递。()

所以在functions dir中,我应该像下面那样修改代码

const functions = require('firebase-functions')
const express = require('express')
const { Nuxt } = require('nuxt')

const app = express()

const config = {
  dev: false,
  buildDir: 'nuxt',
  build: {
    publicPath: '/'
  }
}
const nuxt = new Nuxt(config)

function handleRequest(req, res) {
  res.set('Cache-Control', 'public, max-age=600, s-maxage=1200')
  nuxt.renderRoute('/').then(result => {
    res.send(result.html)
  }).catch(e => {
    res.send(e)
  })
}

app.get('*', handleRequest)
exports.nuxtApp = functions.https.onRequest(app)
  :
function handleRequest(req, res) {
  res.set('Cache-Control', 'public, max-age=600, s-maxage=1200')
  **req.data = "some data from firestore"**
  nuxt.renderRoute('/', **{ req }** ).then(result => {
    res.send(result.html)
  }).catch(e => {
    res.send(e)
  })
}
  :
在src dir中,vue.js文件如下所示

<template>
    <p>{{ apiResult }}</p>
</template>

<script>
export default {
  asyncData(context) {
    return { apiResult: context.req.data };
  }
}
</script>

<template>
</template>

{{apireult}}

导出默认值{ 异步数据(上下文){ 返回{apireult:context.req.data}; } }
它将查看
请求数据
,就像
firestore中的一些数据

我可以达到我的目的。谢谢你们

我有答案

numxt.renderRoute()
可以将参数中的数据作为可选参数传递。()

所以在functions dir中,我应该像下面那样修改代码

const functions = require('firebase-functions')
const express = require('express')
const { Nuxt } = require('nuxt')

const app = express()

const config = {
  dev: false,
  buildDir: 'nuxt',
  build: {
    publicPath: '/'
  }
}
const nuxt = new Nuxt(config)

function handleRequest(req, res) {
  res.set('Cache-Control', 'public, max-age=600, s-maxage=1200')
  nuxt.renderRoute('/').then(result => {
    res.send(result.html)
  }).catch(e => {
    res.send(e)
  })
}

app.get('*', handleRequest)
exports.nuxtApp = functions.https.onRequest(app)
  :
function handleRequest(req, res) {
  res.set('Cache-Control', 'public, max-age=600, s-maxage=1200')
  **req.data = "some data from firestore"**
  nuxt.renderRoute('/', **{ req }** ).then(result => {
    res.send(result.html)
  }).catch(e => {
    res.send(e)
  })
}
  :
在src dir中,vue.js文件如下所示

<template>
    <p>{{ apiResult }}</p>
</template>

<script>
export default {
  asyncData(context) {
    return { apiResult: context.req.data };
  }
}
</script>

<template>
</template>

{{apireult}}

导出默认值{ 异步数据(上下文){ 返回{apireult:context.req.data}; } }
它将查看
请求数据
,就像
firestore中的一些数据

我可以达到我的目的。谢谢你们