如何使用 YDN-DB 在单个事务中将数据保存到 websql

Posted

技术标签:

【中文标题】如何使用 YDN-DB 在单个事务中将数据保存到 websql【英文标题】:How to save data to websql in a single transaction using YDN-DB 【发布时间】:2014-09-23 07:07:42 【问题描述】:

我有一个可以手动选择离线的应用。当用户这样做时,我会触发 ajax 请求以获取数据并将其保存在 websql db 中。我检索到的数据由一组模型组成,我想在单个事务中单独编写这些模型。 (每个模型都有自己的 id,我想将其用作 keypath 以便之后更轻松地查询)

我可以使用的最接近的方法是add(store_name, values),但我不知道如何使用它。没有例子,我也想不通。我也不确定这种方法是否正是我需要做的。这里有任何反馈吗?你能给我一个简短的例子吗?

问候,弗洛林

【问题讨论】:

【参考方案1】:

抱歉,我找到了答案。我只需要尝试一下。这里是来自文档“注意多个记录是通过在一个事务中使用记录数组来存储的。”:

var data = [id: 'a', message: 'a record', id: 'b', message: 'b record'];
db.put('store2', data).always(function(x) 
    console.log(x);
);

【讨论】:

您也可以在单个事务中使用db.run 处理多个请求。 @KyawTun 你能举个例子吗? @KyawTun 请看下面的例子!知道为什么在较旧的 android 上会失败吗?如前所述,我特意将机制强制为 websql ......我的交易也没有取得太大的成功,CSVStreamer 示例似乎最接近我想要实现的目标,但太复杂了。您能否提供一个简单的示例,说明如何在单个事务中插入集合?谢谢! @KyawTun 这是我使用事务的尝试,但在 android 4.1.2 中仍然没有成功 :) gist.github.com/bboydflo/21c986b9a6c0ca4b703330130dac8f84【参考方案2】:

仍有问题。我正在使用一种解决方法,当我将机制强制为 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 在单个事务中插入一个集合?

【讨论】:

以上是关于如何使用 YDN-DB 在单个事务中将数据保存到 websql的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中将对象数组保存到文件中

在jdbc中的单个事务中将数据插入多个表中

YDN-DB 可以一次处理大型条目吗?

如何将数据从 ydn-db Web 应用程序同步到后端服务器?

如何在单个可执行文件中将数据重定向到标准输入?

Laravel Eloquent:在单个数据库事务中保存模型和关系