मैं एक वेबप्ल के लिए स्टोरेज सिस्टम के रूप में एक स्क्लाइट डीबी का उपयोग कर रहा हूं। मैं उन वस्तुओं का उपयोग कर रहा हूं जो सीधे आवेदन में प्रश्नों से लौटाए जाते हैं। उदाहरण के लिए:अपरिवर्तनीय क्रोम स्क्लाइट रिटर्न ऑब्जेक्ट्स
function get_book_by_id(id,successCallback,errorCallback)
{
function _successCallback(transaction, results)
{
if(results.rows.length==0) {successCallback(null);}
else
{
book=results.rows.item(0);
successCallback(book);
}
}
db.transaction(
function (transaction) {
transaction.executeSql("SELECT id,title,content,last_read from books where id=?;",[id], _successCallback, errorCallback);
});
}
यह मुझे दिए गए आईडी के साथ एक वस्तु देता है, सभी कॉलम गुणों के रूप में प्रदान किए जाते हैं। अच्छा लगा। जिस समस्या को मैंने अभी समझा है वह यह है कि परिणाम सेट ऑब्जेक्ट के सभी गुण अपरिवर्तनीय हैं। तो उदाहरण के लिए यदि मैं संपत्ति 'शीर्षक' को बदलना चाहता हूं तो इसका कोई प्रभाव नहीं पड़ता है, जो मेरी राय में कोई समझ नहीं आता है। उदाहरण:
get_book_by_id(1,handle,error);
function handle(book)
{
//THIS DOESN'T WORK, book.title is still what it was.
book.title=book.title+"more text";
}
मैं निश्चित रूप से मेरी सभी डीबी वस्तुओं को परिवर्तनीय वस्तुओं में परिवर्तित कर सकता हूं, लेकिन मैं ऐसा नहीं करता।
क्या यह एक अपेक्षित व्यवहार है? क्या मैं परिवर्तनीय वस्तुओं का अनुरोध कर सकता हूं?
मैं गूगल क्रोम 9.0 उपयोग कर रहा हूँ Mac OS X पर
मैं एक समाधान के रूप यह कर रहा हूं: समारोह convert_to_mutable (result_object) { \t वर परिवर्तनशील = नई वस्तु(); \t (परिणाम_object में var कुंजी) {mutable [key] = result_object [key]}; \t वापसी \t उत्परिवर्तनीय; } –
क्या आप दिखा सकते हैं कि आपने डेटाबेस कैसे बनाया है या इसके लिए प्रलेखन से लिंक किया है? – Havvy
मैंने इसे यहां किया: https://github.com/whoisstan/hyper_books/blob/master/js/book_storage.js - प्रोजेक्ट्स लक्ष्य कॉपीराइट पुस्तकों के लिए एचटीएमएल 5 आधारित ईबुक रीडर लिखना था, मैंने खर्च नहीं किया है पिछले वर्षों में इसके साथ काफी समय, मुझे चाहिए। –