【问题标题】:Jaydata WebSql Provider with Typescript带有 Typescript 的 Jaydata WebSql 提供程序
【发布时间】:2012-12-03 12:26:27
【问题描述】:

我一直在对 OData 存储使用 jaydata 和 TypeScript,如下所述:http://jaystack.com/blog/typescript-meets-odata-with-the-help-of-jaydata-and-jaysvcutil

现在,我正在尝试扩展应用程序以使用本地存储(例如,webSql),但打字稿声明文件似乎只允许实例化 OData 上下文。在针对不同的存储提供程序时如何使用声明文件?

【问题讨论】:

    标签: typescript jaydata


    【解决方案1】:

    我为 JayData 工作。这么晚才回复很抱歉。 在 JayData 中,我们有一个名为“本地”的“虚拟”提供程序。它隐藏了不同浏览器支持的不同本地存储技术,因此您不必担心它并为 IndexedDB、WebSQL 和 HTML5.localStorage 编写代码。只需编写一次即可。

    你所要做的就是改变服务的参数,像这样:

    var mydatabaseService = new mydatabase.mydatabaseService({
        name: 'local',
        databaseName: 'myitems'
    });
    

    有几点需要注意: 不支持 -string 主键(不是由 JayData 支持,而是由商店支持) - 如果您想要导航属性,那么目前它仅受 sqLite 支持,因此您必须显式使用它(名称:'sqLite' 而不是名称:'local'),并且无法在每个设备中找到 sqlite。我们将很快在其他商店实施导航。

    【讨论】:

    • 谢谢加博。我现在这样做了,但它似乎不起作用。我正在尝试实例化本地上下文并将其与从我的 OData 元数据自动生成的实体一起使用。它似乎只适用于 oData 上下文。
    • 我在回答之前尝试了它并且它有效。您使用最新的 JayData 吗?控制台上有什么东西吗?
    • 您是手动加载提供程序还是使用 onReady()?如果手动包含必要的提供程序,但我建议自动加载它。
    • 谢谢加博。我收到以下错误消息:'无法调用未定义的方法'addMany'
    • 嗨 Gabor,我发现如果我向提供程序文件 (indexedDb) 添加脚本引用,原来的错误就会消失,但我会得到一个新错误:“找不到有效的密钥!”。有什么线索吗?
    【解决方案2】:

    冒着明显的风险:您可以创建自己的d.ts 声明文件,或编辑您一直在使用的文件,或查看此处是否有:https://github.com/borisyankov/DefinitelyTyped

    【讨论】:

    • 这些 d.ts 文件是动态的 - 或者更准确地说,它们是特定于数据库的。在肯定类型上不太可能找到它们。 jaydata.d.ts 是另一个问题,在提交过程中,因为我们将为 JayData 提供一个 d.ts,它涵盖了包括类型系统在内的大部分功能
    • 是的,很公平 - 我只是想提供尽可能多的选项来查找 d.ts 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多