Как передать данные из VUEX Store в serverMiddleware API? - PullRequest
0 голосов
/ 08 ноября 2018

Можно ли передавать данные из Vuex Store на serverMiddleware в Nuxt.js?

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

In nuxt.config

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

Тогда как мне получить доступ к данным в api / index.js?

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

  next()
}

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Единственный способ, который я нашел, это;

функции readFile и writeFile.

In nuxt.config

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

In 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 (узел и экспресс)

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
   }
});
0 голосов
/ 08 ноября 2018

Решение моей проблемы было найдено с bodyParser. Использование app.use (bodyParser.json ()).

...