저는 AngularJS, MongoDB 및 NodeJS를 사용하여 앱을 제작하고 있습니다. 내 앱은 CRUD 작업을 위해 Mongolab REST API를 사용합니다. 또한 디버깅을 위해 Google 크롬 개발자 도구를 사용하고 있습니다. 오늘까지Chrome dev - 읽기 전용 속성에 할당 할 수 없습니다.
, 몽고 내 업데이트 작업은 크롬과 파이어 폭스 (I 가끔 사용하는 것이)하지만 모두 잘 작동하고 크롬이 자동으로 업데이트 후 업데이트가 실패하고이 오류가 : 내가 가지고있는
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
을 이 오류는 Chrome에서만 발생하며 Firefox는 오류가 전혀 표시되지 않고 업데이트가 성공한 것입니다. 내 각 모듈에 업데이트 자체를 엄격 모드를 사용 이를 사용하여 수행됩니다 :
var queryJson = { "$inc": {"count":1} , "$set" : {"messages": message} };
내가 때문에 크롬에 갱신 또는 뭔가 다른인지 확실하지 않다 :
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);
};
.
누구나 이런 식으로 된 사람이 있습니까? 어떤 도움이라도 대단히 감사하겠습니다.
참고 : {_id : undefined}는 개체에서 _id 속성을 제거하는 방법 일뿐입니다. MongoLab은 PUT을 통해 전송 된 데이터의 일부가 아닌 URL의 일부로 전송되도록 업데이트하는 객체의 ID가 필요합니다.
그 일을하는 또 다른 방법 :
var objCopy = angular.copy(this) ;
if (objCopy._id)
delete objCopy["_id"] ;
httpPromise = $http.put(url + "/" + this.$id(), angular.extend(params, objCopy), {params:defaultParams}) ;
감사합니다! 그것은 단지 _id 속성을 제거하는 방법 일뿐입니다 (위의 게시물에서 편집을 참조하십시오). –
하지만 _id 속성을 수정해서는 안됩니다. 몽고는 그것을 좋아하지 않을 것입니다. 열쇠를 삭제하는 것이 좋습니다. – Paul
그래, 대신 키를 삭제하겠습니다. –