मैं AngularJS, MongoDB और NodeJS का उपयोग करके एक ऐप बना रहा हूं। मेरा ऐप सीआरयूडी संचालन के लिए मंगोलब रीस्ट एपीआई का उपयोग करता है। मैं डीबगिंग के लिए Google क्रोम डेवलपर टूल्स का भी उपयोग कर रहा हूं।क्रोम देव - केवल संपत्ति पढ़ने के लिए असाइन नहीं कर सकता
आज तक, मोंगो पर मेरे अद्यतन संचालन Chrome और Firefox (कि मैं कभी कभी का उपयोग), लेकिन पर ठीक काम कर रहे थे के बाद क्रोम स्वचालित रूप से अपडेट, अद्यतन असफल और मैं इस त्रुटि है:
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
मेरे पास है यह त्रुटि केवल क्रोम पर है, फ़ायरफ़ॉक्स बिल्कुल कोई त्रुटि नहीं दिखाता है और अपडेट सफल होता है। अद्यतन ही मेरी कोणीय मॉड्यूल में सख्त मोड का उपयोग इस का उपयोग किया जाता:
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);
};
कहाँ:
var queryJson = { "$inc": {"count":1} , "$set" : {"messages": message} };
मुझे यकीन है कि अगर यह क्रोम पर अद्यतन या कुछ और की वजह से नहीं कर रहा हूँ।
क्या कोई इस तरह से कुछ आया है? किसी भी प्रकार की सहायता सराहनीय होगी।
नोट: {_id: अपरिभाषित} ऑब्जेक्ट से _id प्रॉपर्टी को हटाने का एक तरीका है। मोंगोलाब को यूआरएल के हिस्से के रूप में भेजने के लिए किसी ऑब्जेक्ट की आईडी की आवश्यकता होती है, न कि PUT के माध्यम से भेजे गए डेटा के हिस्से के रूप में।
यह ऐसा करने का एक और तरीका है:
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 संपत्ति को संशोधित नहीं करना चाहिए; mongodb उस पसंद नहीं होगा। आप कुंजी को हटाने से बेहतर हैं। – Paul
ठीक है, मैं इसके बजाय कुंजी हटा दूंगा। –