我正在使用一個SQLite DB作爲一個Web應用程序的存儲系統。我一直在使用直接在應用程序中從查詢返回的對象。例如:不可變的鉻sqlite返回對象
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);
});
}
這會返回給我一個具有給定ID的對象,所有列都作爲屬性提供。尼斯。我剛纔發現的問題是,結果集對象的所有屬性都是不可變的。因此,例如,如果我想更改屬性「標題」,它不會起作用,在我看來這沒有任何意義。例如:
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 VAR可變=新的對象(); \t for(var key in result_object){mutable [key] = result_object [key]}; \t return \t mutable; } – 2011-02-23 17:26:12
你能展示你如何創建數據庫或鏈接到它的文檔? – Havvy 2013-12-18 01:56:30
我這樣做:https://github.com/whoisstan/hyper_books/blob/master/js/book_storage.js - 項目的目標是編寫一個基於html5的電子書閱讀器,用於版權書籍,我沒有花費我應該在過去的幾年裏花很多時間。 – 2013-12-18 14:08:41