如何将数据从VUEX Store传递到serverMiddleware API?

时间:2018-11-08 16:16:21

标签: vuejs2 vuex nuxt.js

是否可以将数据从Vuex商店传递到Nuxt.js中的serverMiddleware?

  async SET_DATA({commit}, payload) {
    await this.$axios.$post('/api', { data: payload.data})
    commit('SET_DATA', payload.data)
  }

在nuxt.config中

  serverMiddleware: [
    { path: '/api', handler: '~/api/index' }
  ]

然后如何访问api / index.js中的数据?

export default function (req, res, next) {
  // Get data from Store here

  next()
}

3 个答案:

答案 0 :(得分:0)

req.body

我了解您的服务器语言是节点

https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/

答案 1 :(得分:0)

我的问题的解决方案是使用bodyParser找到的。使用app.use(bodyParser.json())。

答案 2 :(得分:0)

我发现的唯一方法是;

readFile和writeFile函数。

在nuxt.config中

modules: ['~/api/api.js'],

在api / api.js中

我使用这种方法,是因为在尝试构建应用程序时,servermiddleware会导致错误。

module.exports = function (moduleOptions) {
//Add middleware only with `nuxt dev` or `nuxt start`
var fs = require('fs');

// Save file from env or vuex anything comes with this
fs.writeFile('envTransfer.txt',  JSON.stringify(this.options.env), function (err) {
  if (err) throw err;
  console.log('Saved!');
}); 

// Then call addServermiddleware  
 //Add middleware only with `nuxt dev` or `nuxt start`
if (this.options.dev || this.options._start) { 
  this.addServerMiddleware('~/api/index.js')
}
}

在api / index.js部分(node&express)中

const fs        = require('fs');
const express = require('express');
const app = express()
....
let content="";
fs.readFile('envTransfer.txt',  function(err, data) {
if (err) throw err;
content = data; 
var obj = JSON.parse(content);

 // do it what ever you want

app.get('/', (req, res, next) => {
     // res.send('API root')
})

// export the server middleware
    module.exports = {
      path: '/api',
      handler: app
   }
});