2013-12-15 3 views
2

BackFire의 Backbone.Firebase.Collection을 사용하고 있습니다. 모델을 업데이트하기 위해 입력 필드에 리스너가 있습니다.Firebase.update failed : 첫 번째 인수에 주기적 객체 값이 포함되었습니다.

Uncaught TypeError: Firebase.update failed: First argument contains a cyclic object value (collection.models.0.collection.models.0.collection.models.0.collection.models.0.collection.models.0.collection.models.0.collection.models.0.collection.models.0.collection.models...)

: 나는 콘솔에서 다음과 같은 오류가 값이 검증되고 데이터가 (포지를 통해 확인) 중포 기지의 말에 업데이트됩니다 않지만 다음 모델은

this.model.save({'title': val});

를 통해 업데이트됩니다 테스트를 위해 Firebase를 Localstorage로 교체하면 응용 프로그램이 제대로 작동합니다. BackFire를 사용하더라도 데이터가 업데이트되고 있습니다.

+1

컬렉션의 모델에는 해당 모델에 대한 참조가있는 컬렉션에 대한 참조가 있습니다. 그러면 해당주기가 있습니다. 그래서 당신이 그것을 잘못 사용하고 있거나 Backfire가 버그를 가지고 있고 어디 론가'toJSON' 콜을 잃어 버렸습니다. –

+0

귀하의 의견은 문제를 파악하는 데 도움이되었습니다. tl; dr :'model.save' 대신'mode.set'을 사용해야합니다. 의사가 을 말합니다. "알아 두십시오! 원격 데이터에 영향을 줄 수있는 함수를 호출 할 필요가 없습니다. 가져 오기 또는 동기화를 호출하면 컬렉션에, 도서관은 그것을 자동으로 무시할 것이다. " 콜렉션의 경우 가져 오기와 동기화를 무시하지만'model.save'를'Backbone.sync'에 위임하면 백 파이어는 그것을 무시하지 않고이 오류를 throw합니다. 감사합니다. –

+0

답변으로 받아 들인 다음 동의하면 다른 사람들에게 좋은 참고 자료가 될 수 있습니다. 자신의 질문에 대답하고 대답을 수락 할 수 있습니다 (단, AFAIK는 24 시간 이내에 답변을 수락해야합니다). –

답변

1

Backbone.Firebase.Collection을 사용하는 경우 model.save()를 호출하지 말고 model.set()을 사용하여 모델을 편집하기 만하면 컬렉션이 업데이트됩니다.