【问题标题】:Server side stores in nodejs (to be used in Dojo)nodejs 中的服务器端存储(用于 Dojo)
【发布时间】:2012-11-23 10:23:44
【问题描述】:

我正在编写这个很棒的应用程序。这是我第一次尝试编写一个仅在另一端使用 Restful 存储的单页全 AJAX 应用程序。

现在...我编写了一些代码,到目前为止,我只需要使用 GET 进行简单查询。然而,为了保持一切整洁,我确保我有一个“协议”:每个请求都有一个格式为:

{↵ "ack": "ERROR", "message": "required filter not passed",↵ "errors": { "name": "parameter required"↵ } }

万一出现错误(在这种情况下,我要求用户设置过滤器)。

现在...如果 GET 确实 工作,我还有一个“数据”字段,因此结果如下所示:

{↵ "ack": "OK", "data": { ... } }

现在我遇到了 Dojo 问题,因为例如 dgrid 期望返回对象的“根”(可以这么说)中的数据,而不是“数据”键。

可能的解决方案:

1) 破解我的 JsonRest 文件(它已经有点不同了,我添加了超时等,它毕竟是一个样板文件)所以,对于“查询”,它实际上使用 then() 操作结果并返回原始数据

2) 更改我的协议,如果 HTTP 状态为 200,并且由于没有错误消息或任何要给出的内容,它只是返回数据

3) 以某种方式说服所有小部件在查询后使用返回的 JSON 的“数据”部分中的内容(这似乎非常不太可能)。

我应该走哪条路?一方面,我喜欢协议始终遵循相同格式的事实(尽管我承认它没用)。另一方面,更改 JsonRest 似乎很容易。但是再一次,第三方 API 可能不喜欢从返回对象的“数据”键中提取数据......

在这里做什么才是明智的?

谢谢!

佣兵团

【问题讨论】:

    标签: ajax json node.js rest dojo


    【解决方案1】:

    我还没有尝试过,但文档表明如果 JsonRest 查询生成 HTTP 错误代码,xhr 错误对象将一直传递到 dgrid,并且是与 关联的数据之一dgrid-error 事件。

    dgrid core components
    dgrid issue mentioning query errors

    如果它工作正常,那么我会选择解决方案 2,因为它需要对标准组件的修改最少,并且只使用提供的 API。

    【讨论】:

    • 接受答案——谢谢摩根。我实际上最终选择了(1),因为每次都使用相同的协议很有意义......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    相关资源
    最近更新 更多