【问题标题】:Firebase infinite loop insert my item on child_added/setFirebase 无限循环在 child_added/set 上插入我的项目
【发布时间】:2017-02-06 00:34:19
【问题描述】:

我在向 Firebase 中插入项目时遇到了一个无限循环,因此当我单击我的帖子表单时,它会插入我的项目,直到我终止该进程。你能帮我解决一下吗?

PS:我正在使用 VueJS

            var usersRef = new Firebase('https://xxxxxxxxxxxxxxxxxx.firebaseio.com/userslist/');

            var vm = new Vue({
                el: '#list1',
                data: function () {
                    return{
                        // Initialisation du tableau de users
                        users: [],
                        sortKey: 'id',
                        reverse: 1,
                        nextKey: null
                    };

                },
                ready: function () {
                    // this works
                    //this.sortKey = 'name';
                },
                methods: {
                    updateUsers: function () {
                    },
                    removeUser: function (item) {
                        usersRef.child(item.id).remove();
                    },
                    addItem: function (e) {
                        e.preventDefault();
                        // get form data as Json
                        var jsonData = ConvertFormToJSON('form_add');
                        //console.log(jsonData);//test ok

                        //get the last item id and save it to next key

                        usersRef.limitToLast(1).on('child_added', function (snapshot) {
                            var lastKey = parseInt(snapshot.key());
                            this.nextKey = lastKey + 1;
                            console.log('nextKey ' + nextKey);//test ok
                            //
                            // save data to firebase
                            usersRef.child(this.nextKey).set(jsonData, function (snap) {
                             //console.log('add success');//test
                             //Notification par Jquery
                             var itemAdded = snap.val();
                             $.notify(itemAdded.firstname + " " + itemAdded.name + " à été ajouté", "success", {position: "top right"});
                             this.pendingKey = 0;
                             });
                        });

                    },
                    // Tri des colonnes
                    sortBy: function (_sortKey) {
                        this.reverse = (this.reverse == -1) ? 1 : -1;
                        this.sortKey = _sortKey;
                        console.log("SortKey " + this.sortKey);
                    }
                }
            });


            usersRef.on('child_added', function (snapshot) {

                var item = snapshot.val();
                item.id = snapshot.key();
                console.log('id ' + item.id);

                vm.users.push(item);

            }, function (errorObject) {
                console.log("The read failed: " + errorObject.code);
            });

感谢您的帮助

【问题讨论】:

    标签: firebase firebase-realtime-database vue.js


    【解决方案1】:

    好的,我找到了解决方案:

                //get the last item id and save it to next key
                var _nextKey = this.nextKey;
                usersRef.limitToLast(1).on('child_added', function (snapshot) {
                    var lastKey = parseInt(snapshot.key());
                    _nextKey = lastKey + 1;
    
                });
                this.nextKey = _nextKey;
                console.log('nextKey ' + this.nextKey);//test ok
                // save data to firebase
                usersRef.child(this.nextKey).set(jsonData, function (snap) {
                    //console.log('add success');//test
                    //Notification par Jquery
                    var itemAdded = snap.val();
                    $.notify(itemAdded.firstname + " " + itemAdded.name + " à été ajouté", "success", {position: "top right"});
                });
    

    希望对某人有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-12
      • 1970-01-01
      • 2019-03-03
      • 2019-05-17
      • 1970-01-01
      相关资源
      最近更新 更多