javascript – dojo.store.Observable,JSON REST和queryEngine

前端之家收集整理的这篇文章主要介绍了javascript – dojo.store.Observable,JSON REST和queryEngine前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有人知道如何在dojo中使用带有Observable weaponper的JsonRest存储,就像在dojo.store.Observable中那样?

我需要什么,服务器端,实现商店并使其作为Observable工作?客户端怎么样?
文档说http://dojotoolkit.org/reference-guide/1.7/dojo/store/Observable.html

If you are using a server side store like the JsonRest store,you will need to provide a queryEngine in order for the update objects to be properly included or excluded from queries. If a queryEngine is not available,observe listener will be called with an undefined index.

但是,我不知道他们的意思.我自己从未创建过商店,并且我对queryEngine并不是很熟悉(说实话,我觉得它有点令人困惑).为什么需要queryEngine? doc是什么意思“未定义索引”?你如何为JsonRest商店编写一个queryEngine?我不应该为可观察的REST商店使用某种Web套接字,因为其他用户也可能会更改数据吗?

困惑!

解决方法

我意识到这个问题有点陈旧,但这里有一些信息供将来参考.由于这是一个多部分问题,我将其分解为单独的部分:

1)JsonRest的服务器端实现

在实现server side of JsonRest Store时有一个相当不错的写法.它准确显示了JsonRest将生成什么标头以及其余将包含哪些内容.它有助于形成JsonRest api如何转换为HTTP的心智模型.

2)查询引擎

在同一页面的早些时候,解释了how query() works client side.基本上,query()函数需要能够接收对象文字(例如:{title:’Learning Dojo’,categoryid:5})并返回商店中符合这些条件的对象. “在商店中”意味着已经加载到客户端的内存中,而不是在服务器上.

根据您要做的事情,可能无需编写您自己的queryEngine – 如果您正在构建自己的自定义商店,只需使用built-in SimpleQueryEngine即可.引擎只需要传递一个对象文字,它会为你添加整个dojo query()api.

3)可观察者

我的理解是Observables监视客户端对象集合中的更改(例如:添加删除结果),甚至是特定对象内的更改(例如:post 5更改了标题).它不监视服务器端发生的更改.它只是提供一种机制来通知客户端应用程序的其他方面数据已更改,以便页面的所有方面保持同步.

标题为“收集数据绑定”和“对象数据绑定:道场/有状态”的标题下,有一整篇文章using Observables上写完.

4)并发

为了使客户端数据与服务器端数据保持同步,您需要做两件事:a)轮询服务器上其他用户的更改,b)使用事务将数据发送到服务器.

a)要轮询数据的更改,您需要让对象存储库跟踪变量中的活动查询.然后,使用setTimeout()或setInterval()每隔一段时间再次在后台运行查询.确保应用程序的小部件或其他方面使用Observables来监视它们所依赖的查询结果集中的更改.这样,其他用户对服务器的更改将自动反映在整个应用程序中.

b)使用事务来组合必须组合的动作.然后,确保服务器发回HTTP 200状态代码(意思是“它工作!”).如果事务在400s中返回HTTP状态,那么它由于某种原因不起作用,并且您需要重新查询数据,因为后端发生了某些变化.例如,您要更新的记录已删除,因此您无法更新它.在“交易”标题下还有一个write up on transactions

原文链接:https://www.f2er.com/js/158054.html

猜你在找的JavaScript相关文章