【问题标题】:BreezeJS with json file as datasource (no server solution)以 json 文件作为数据源的 BreezeJS(无服务器解决方案)
【发布时间】:2013-07-02 14:34:07
【问题描述】:

我有以下场景:我正在做一个出版物查找工具,以便用户可以通过搜索字段和过滤器查找文档。现在我们的预算很小,所以所有数据都存储在一个 json 文件中(约 60 条记录)。如果项目成功,我们将拥有一个带有数据库和几千条记录的服务器。

我想使用微风开发所有的查找解决方案,所以以后我不必做很多修改。问题是我找不到有关直接查询 json 文件的信息(没有服务器)。

你认为这可能吗?

【问题讨论】:

    标签: javascript json knockout.js breeze


    【解决方案1】:

    其实是可以的。但是我想不出像设置一个简单的服务器那样简单的方法。这就像使用 Visual Studio 跟踪日志一样。也许你来自不同的环境?我想知道。即使在那里,通常也很容易使用某种可以返回 JSON 的 http API 来构建一些东西。

    如果您只有 60 条记录,我猜这是您急于站起来的原型。你太着急了,甚至不想使用服务器……这有点奇怪,因为你需要一些东西来提供 HTML、CSS 和 JavaScript 文件,对吧?

    你可以很容易地用 node.js / express 做到这一点;几乎就像设置一个读取并返回 JSON 文件的快速路由一样简单。但这仍然涉及在某处运行的服务器(客户端自己的机器?),您必须学习一些基本的 node.js

    您可以完全使用 HTML 和 JS 脚本文件而不是文件系统以外的服务器来完成。

    在我的脑海中,我想我会从 writing a custom Breeze ajax adapter 开始,这实际上是一个模拟:无论您要求什么,它都会返回完整的 JSON 数据。

    您在应用程序启动时调用一次以将实体加载到 EntityManager 缓存中。然后使所有后续查询成为本地查询。可以设置EntityManager默认查询策略,默认将所有查询转为本地查询。

    无论您做什么,都必须define metadata 来描述您的 JSON 数据中的实体类型。我猜你只有一种类型,所以应该简单快捷。

    您还必须做一些事情来告诉 Breeze 您正在查询什么样的实体。在查询末尾添加.toType('Foo'); 可能就足够了。如果您在堆栈的较低级别需要更高级的东西,您可以随时深入研究JsonResultsAdapter

    这些都不难。但也不是 Breeze 101。您没有遵循我们认为的典型应用程序开发路径。也许我们错过了一些东西。我很想知道人们是否能理解你的情况。

    【讨论】:

    • 这不是原型。现在我必须开发两个带有小型 json 数据源的查找解决方案(但更多正在开发中)。出于这个原因,我想开发一个通用的查找解决方案(带有某种多功能框搜索和过滤器)。如果我可以为这些简单的项目将微风绑定到 json 数据源,那么在更大的项目中,我将只需要更改微风配置即可从服务器加载 json,而无需更改任何其他内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 2018-10-17
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多