Я использую sqlite DB в качестве системы хранения для webapp. Я использовал объекты, возвращаемые из запросов непосредственно в приложении. Например:
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);
});
}
Это возвращает мне объект с данным идентификатором, все столбцы предоставляются как свойства. Ницца. Проблема, которую я только что выяснил, заключается в том, что все свойства объекта набора результатов неизменяемы. Так, например, если я хочу изменить свойство "title", это не имеет никакого эффекта, что, на мой взгляд, не имеет смысла. Пример:
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";
}
Я, конечно, могу преобразовать все мои объекты БД в изменяемые объекты, но я бы этого не сделал.
Это ожидаемое поведение? Могу ли я запросить изменяемые объекты?
Я использую google chrome 9.0 в Mac OS X.