我们正在考虑冒险,将我们现有的应用程序WebSql
后端/数据层移植到JayData
。这都是客户端。我们希望分两个阶段进行迁移,允许我们的应用程序继续使用现有的方法从数据库中读取数据,同时我们的解析将转移到允许JayData控制所有的读写数据结构。
早期测试非常顺利。JayData
是一个很好的ORM,易于使用。然而,我们一次又一次地遇到错误:
Uncaught TypeError: Cannot set property 'initData' of undefined SqLiteProvider.min.js:35
DefaultError: DEFAULT ERROR CALLBACK!
Exception {name: "DefaultError", message: "DEFAULT ERROR CALLBACK!", data: Arguments[1], _getStackTrace: function}
根据日志,解析器的每个阶段(使用JayData)都成功地完成了读取和写入。然而,数据库中经常有未填充的表。所有表都在相同的上下文中打开,并使用$.Deferreds.
这是一个"假阳性",JayData认为它已经完成了它的交易,错误实际上是告诉我的?
打开数据库(JayData之外)和修改表,而context
打开(但不使用)是一个问题吗?
按照注释的指示。
源代码在第424行抛出异常 - items[i].physicalData.initData = item.rows[0];
在与JayData团队进行了长时间的讨论后,问题是由于试图一次对上下文执行多个操作而引起的。该团队建议使用在共享上下文中操作的承诺链,然后在最后阶段提交更改。这就解决了我所有的问题。
我们需要更多的信息,所以:-请使用未缩小的版本,以便我们更好地定位错误-如果你使用铬然后设置它,所以它暂停未捕获的异常(紫色标志),当它停止环顾四周,也许可以学到一些东西-创建一个小的例子(最好在jsfiddle上),这样我们可以调试它