Chrome dev - Nicht zuordnen können, um nur-lese-Eigenschaft
Baue ich ein app mit AngularJS, MongoDB und NodeJS. Meine app mithilfe des Mongolab-REST-API für die CRUD-Operationen. Ich bin auch mit Google Chrome Developer Tools für die Fehlersuche.
Bis heute mein Update-Operationen auf mongo waren wunderbar funktioniert, auf beiden Chrome und Firefox (nutze ich gelegentlich) aber nach Chrome automatisch aktualisiert, die updates fehlschlagen und ich habe diesen Fehler :
TypeError: Cannot assign to read only property '_id' of {"$inc":{"count":1},"$set":{"messages":[{"unread":false,"flagged":false}]}}
at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.9/angular.js:409:18
Habe ich diesen Fehler nur in Chrome, Firefox zeigt keine Fehler und das update ist erfolgreich.
Der strikte Modus in meinem Winkel-Modul das update selbst erfolgt über diese :
Resource.prototype.$update = function (queryJson,successcb, errorcb) {
var params = angular.isObject(queryJson) ? JSON.stringify(queryJson) : {},
httpPromise = $http.put(url + "/" + this.$id(), angular.extend(params, this, {_id:undefined}), {params:defaultParams});
return thenFactoryMethod(httpPromise, successcb, errorcb);
};
Wo :
var queryJson = { "$inc": {"count":1} , "$set" : {"messages": message} };
Ich bin mir nicht sicher, ob es durch das update auf Chrome oder etwas anderes.
Hat jemand auf etwas stoßen wie diese? Jede Hilfe wird sehr geschätzt.
Hinweis: {_id:undefined} ist nur ein Weg, entfernen das _id-Eigenschaft des Objekts. MongoLab erfordert die id eines Objekts zu aktualisieren gesendet werden als Teil der URL und nicht als Teil der gesendeten Daten über SETZEN.
Anderen Weg, es zu tun :
var objCopy = angular.copy(this) ;
if (objCopy._id)
delete objCopy["_id"] ;
httpPromise = $http.put(url + "/" + this.$id(), angular.extend(params, objCopy), {params:defaultParams}) ;
InformationsquelleAutor jfab fab | 2014-10-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es herausgefunden. TypeError verwiesen auf angular.js Linie 409 ist über das erweitern eines Objekts.
was ich falsch machte :
So, was ich geändert habe ($update-Methode) :
für :
Nicht kopiert, sondern direkt meine objCopy, params, ich habe ein leeres Objekt als Ziel. Objekt params entweder leer oder nicht korrekt verlängert.
InformationsquelleAutor jfab fab
Keine Ahnung, warum funktioniert es in einem browser und nicht die anderen, aber Sie sollte das nicht tun:
{_id:undefined}
für jeden Grund, der mir einfällt.Aber Sie sollten sich nicht ändern die Eigenschaft _id; mongodb nicht so. Du bist besser dran, löschen Sie den Schlüssel.
Ok, ich werde den Schlüssel löschen, statt.
InformationsquelleAutor Paul