Sto costruendo un'applicazione utilizzando AngularJS, MongoDB e NodeJS. La mia app utilizza l'API REST di Mongolab per le operazioni CRUD. Sto anche utilizzando gli Strumenti per sviluppatori di Google Chrome per il debug.Chrome dev - Impossibile assegnare alla proprietà di sola lettura
Fino ad oggi, le mie operazioni di aggiornamento su Mongo stavano lavorando bene su entrambi Chrome e Firefox (che uso di tanto in tanto), ma dopo Chrome aggiornato automaticamente, gli aggiornamenti fallire e io ho questo errore:
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
ho questo errore solo su Chrome, Firefox non mostra alcun errore e l'aggiornamento ha esito positivo. Utilizzando la modalità rigorosa nel mio modulo angolare L'aggiornamento si è fatto usando questo:
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);
};
Dove:
var queryJson = { "$inc": {"count":1} , "$set" : {"messages": message} };
non sono sicuro se è perché dell'aggiornamento su Chrome o qualcos'altro.
Qualcuno si è imbattuto in qualcosa del genere? Qualsiasi aiuto sarà molto apprezzato.
Nota: {_id: undefined} è solo un modo per rimuovere la proprietà _id dall'oggetto. MongoLab richiede che l'ID di un oggetto da aggiornare sia inviato come parte dell'URL e non come parte dei dati inviati tramite PUT.
Un altro modo di farlo:
var objCopy = angular.copy(this) ;
if (objCopy._id)
delete objCopy["_id"] ;
httpPromise = $http.put(url + "/" + this.$id(), angular.extend(params, objCopy), {params:defaultParams}) ;
Grazie! è solo un modo di rimuovere la proprietà _id (vedi modifica sul post in alto) –
Ma non dovresti modificare la proprietà _id; a mongodb non piacerà. Stai meglio cancellando la chiave. – Paul
Ok, eliminerò la chiave. –