javascript - 类型错误 : Cannot set property of undefined returned JSON issue using Realtime Firebase in Vue. js

标签 javascript json firebase vue.js firebase-realtime-database

我尝试使用实时 Firebase 数据库中的 JSON 数据填充“结果”数组,但我得到了

TypeError: Cannot set property 'results' of undefined

这是 VueJs 代码。

    <template>
        <div id="show-results">
            <h1>Data</h1>
                 <input type="text" v-model="search"  placeholder="search results" />
                <div v-for="result in results" class="single-result">
                <h2>{{ result.Speed }}</h2>
                <article>{{ result.DiscManufacturer }}</article>
            </div>

        </div>
    </template>

    <script>

    import db from '@/firebase/init'
    import firebase from 'firebase'

    export default {
        data () {
            return {
                results: [
                ],
               search: ''
            }
        },
        methods: {

        },  created() {  
firebase.database().ref().on('value', (snapshot) => { snapshot.forEach((childSnapshot) => { this.results = JSON.stringify(childSnapshot.val());

console.log(this.results);
 });
}
    </script>

请帮忙。我是 VueJS 的初学者。

最佳答案

您的问题来自于在 .forEach() 方法中使用 function() { } 而不是箭头函数:您丢失了对 的引用this (即它变成非词汇的)。这意味着回调中的 this 不再引用 VueJS 组件本身,而是引用 Window 对象。

因此,更改 .forEach() 方法中的回调以使用箭头函数应该可以修复您遇到的错误:

snapshot.forEach(childSnapshot => {
    this.results = childSnapshot.val();   
});

专业提示:由于您的回调包含一行,因此您可以通过不使用大括号使其更具可读性:

snapshot.forEach(childSnapshot => this.results = childSnapshot.val());

关于javascript - 类型错误 : Cannot set property of undefined returned JSON issue using Realtime Firebase in Vue. js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58524209/

相关文章:

json - 如何将数据从 Telegram Bot 内联键盘发送到谷歌电子表格中的特定列?

c# - 将 NServiceBus 事件从 v6 JSON 发布到 v4 XML 环境

javascript - 在 Gatsbyjs 中将 csv 文件转换为 json

java - 如何在 FirebaseRecyclerAdapter 中设置 orderbychild?

firebase - 如何从Flustore中检索当前用户信息

javascript - Cypress : Getting an element from a table using another element as reference

javascript - 当使用 Javascript 单击图像 A 时,如何将图像 B 的 src 更改为图像 A 的 src?

javascript - HTML5 手机应用程序 - 重新缩放视网膜

javascript - 如果我更改类型,jquery 移动表单提交按钮将不起作用

node.js - 错误 : 14 UNAVAILABLE: No connection established - Cloud Firestore