nodejs中的服务器端存储(将在Dojo中使用)

时间:2012-11-23 10:23:45

标签: ajax json node.js rest dojo

我正在写这个伟大的应用程序。这是我第一次尝试编写一个完整的AJAX应用程序,只在另一端使用Restful商店。

现在......我写了一些代码,到目前为止,我只需要使用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似乎很容易。但是,然后AGAIN,第三方API可能不喜欢从返回对象的“数据”键中删除数据......

这里有什么理智的事情?

谢谢!

Merc的。

1 个答案:

答案 0 :(得分:0)

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

dgrid core components
dgrid issue mentioning query errors

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