如何从Vue-i18n的数据库中获取数据?

时间:2019-12-05 06:50:39

标签: vue.js vue-i18n

我想从数据库中获取i18n的语言数据。我使用会话存储来保存数据,然后从API获取数据。但是在会话存储之前创建的i18n从数据库获取数据。在创建i18n之前如何创建会话存储?

i18n

store

call

1 个答案:

答案 0 :(得分:0)

我使用了App.js主文件中的mount()钩子来查询(javascript)session storage。像这样:

const obj = {
  "peoples": [{
      "name": "Alain",
      "nationality": "Italian"
    },
    {
      "name": "John",
      "nationality": "French"
    },
    {
      "name": "FOO",
      "nationality": "French"
    }
  ]
}

const output = obj.peoples.reduce((a, {nationality: n, ...rest}) => {
  const x = a.nationality[n]
  if (x) x.push(rest)
  else a.nationality[n] = [rest]
  return a
}, { nationality: {} })

console.log(output)

这不是实际的SESSION存储,因此也必须在javascript中进行设置。当我从用户登录http请求返回时,我将变量设置如下:

  mounted () {
    //  see if we have a user in Session Storage
    //  yes? commit it to store
    if (sessionStorage.getItem('username') && sessionStorage.getItem('userId') && sessionStorage.getItem('permission') && sessionStorage.getItem('userKey')) {
      let obj = {
        username: sessionStorage.getItem('username'),
        userId: sessionStorage.getItem('userId'),
        permission: sessionStorage.getItem('permission'),
        key: sessionStorage.getItem('userKey')
      }
      this.$store.commit('setUser', obj)
    //  no? commit default 'Guest' user
    } else {
      this.$store.commit('setUserToGuest')
    }
  }