开发者问题收集

未捕获(在承诺中)TypeError:无法读取 Laravel 和 vue.js 中未定义的属性“forEach”

2017-11-23
5445

Hello friends I am tired of getting this error when i count a length of notification by using vue.js and Laravel it show error,Uncaught (in promise) TypeError: Cannot read property 'forEach' of undefined plz help me. here is my code.

store.js

import Vuex from 'vuex'
import Vue from 'vue'

Vue.use(Vuex)

export const store = new Vuex.Store({
state: {
    nots: []

},
getters: {
    all_nots(state) {
          return state.nots
    },
    all_nots_count(state) {
          return state.nots.length
    },

},
mutations: {
    add_not(state, not) {
          state.nots.push(not)
    },
}
})

UnreadNots.vue

<template>
  <li>
        <a href="/notifications">
              Unread notifications
              <span class="badge">{{ all_nots_count }}</span>
        </a>
  </li>
  </template>
 <script>
  export default {
        mounted() {
              this.get_unread()
        },
         methods: {
              get_unread() {
                    this.$http.get('/get_unread')
                        .then( (nots) => {
                              nots.body.forEach( (not) => {
                                    this.$store.commit('add_not', not)
                              })
                        })
              }
        },
        computed: {
              all_nots_count() {
               return this.$store.getters.all_nots_count
              }
        }

    }
</script>

web.php

Route::get('get_unread', function(){
    return Auth::user()->unreadNotification;
  });
3个回答

为避免错误,您需要测试返回值以确保它具有您所期望的所有内容。

if(nots && nots.body && nots.body.length){
    nots.body.forEach( (not) => {
       this.$store.commit('add_not', not)
    })
}
bbsimonbb
2017-11-23

您正在遇到此错误,因为 foreach 期望数组。它是不确定的。从错误中可以明显看出。

解决此问题的一种可能方法是检查 nots.body 是一个数组并且具有项目。

553169253

另一个提示是不使用URL中的下划线。例如,Google将以强调为单词将单词视为一个单词,但对于连字符,他们会认为这是两个词。 get_unread 应该是 get-unread 。这可能不是一个大问题,但是如果您为其他URL这样做,例如 my_blog_title ,那么这是一个更大的问题。

诸如此类通知的更好解决方案是一种休息样式方法喜欢 http://mywebsite.com/user/notifications/unread

Pistachio
2017-11-23

不要使用 nots.body,而要使用 nots.data。 我 5 分钟前也遇到了同样的问题

Whisky Dollar
2018-08-24