Я использую sqlite DB в качестве системы хранения для веб-приложения. Я использовал объекты, которые возвращаются из запросов непосредственно в приложении. Например:
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.