我有一个可以手动选择离线的应用程序。当用户这样做时,我会触发 ajax 请求以获取数据并将其保存在 websql db 中。我检索到的数据由一组模型组成,我想在单个事务中单独编写这些模型。(每个模型都有自己的 id,我想将其用作 keypath 以便以后查询)
我可以使用的最接近的方法是,add(store_name, values)
但我不知道如何使用它。没有例子,我也想不通。我也不确定这种方法是否正是我需要做的。这里有任何反馈吗?你能给我一个简短的例子吗?
问候,弗洛林
对不起,我找到了答案。我只需要尝试一下。这里它来自文档“注意多个记录是通过在一个事务中使用记录数组来存储的。”:
var data = [{id: 'a', message: 'a record'}, {id: 'b', message: 'b record'}];
db.put('store2', data).always(function(x) {
console.log(x);
});
还是有问题。我正在使用一种解决方法,当我将机制强制为 websql 时,它在 chrome 中运行良好。但在 android 4.1.2 上效果不佳。
function insertRows(store, rows){
// array of promises
var insertPromises = [];
// create deffered object
var d = $.Deferred();
// loop through each row
map(rows, function(row){
// update promises array
insertPromises.push( db.put(store, row) );
});
// group promises
Bluebird.all( insertPromises ).then(function(rows){
// resolve promise
d.resolve(null, rows);
}, d.reject);
// return a promise
return d.promise();
}
似乎也没有拒绝。所以我认为它会默默地失败?有没有人有一个简单的例子来说明如何使用 YDN-DB 在单个事务中插入一个集合?