来自jQuery Mobile的离线/在线数据库身份验证/同步
情况:我有一个数据库和一个web应用程序,可以交互显示和更新科学数据表。我的任务是构建一个移动应用程序,允许用户来自jQuery Mobile的离线/在线数据库身份验证/同步,jquery,html,jquery-mobile,offline-caching,session-storage,Jquery,Html,Jquery Mobile,Offline Caching,Session Storage,情况:我有一个数据库和一个web应用程序,可以交互显示和更新科学数据表。我的任务是构建一个移动应用程序,允许用户 出于跟踪目的,脱机验证和标识自己 (使用缓存中存储的预定义但动态的用户帐户和权限) 下载现场工作的识别数据(可接入互联网) 在现场进行观察并存储(无互联网接入) 稍后将观察结果同步到在线数据库中 问题:验证/下载/存储/上传必要数据的最佳方式是什么,以独立于一致的互联网访问管理此类应用程序?如果两个人调整相同的读数,并且在同步之间发生一次更新,我如何跟踪哪些表和值已被更改,并防止更改
[3] 至于同步,您可以看一看——我们正在开发的一个开源库,它可以跨不同类型的存储同步JSON文档,并具有一个超级简单的API 有一系列可用的连接器正在开发中(webDav、S3、xwiki等),您还可以编写自己的连接器,将JIO连接到提供JSON数据的任何地方 然后,在客户端上,您可以使用客户端本地主机和远程存储作为存储设置复制修订存储:
var jio_instance = jIO.newJio({
"type": "replicaterevision",
"storage_list": [{
"type": "revision",
"sub_storage": {<storage spec for your localhost storage>}
}, {
"type": "revision",
"sub_storage": {<storage spec for your remote storage>}
}]
});
可以这样称呼:
jio_instance.get({"_id":"your_doc_id"}, function (err, response) {
// do something
});
options = {
query: '(author:"% Doe") AND (format:"pdf")',
limit: [0, 100],
sort_on: [['last_modified', 'descending'], ['creation_date', 'descending']],
select_list: ['title'],
wildcard_character: '%'
};
// run query
jio_instance.allDocs(options, function (error, response) {
// do sth
});
JIO还有一个复杂查询
模块,允许在存储上运行类似数据库的查询。所以你可以这样做:
jio_instance.get({"_id":"your_doc_id"}, function (err, response) {
// do something
});
options = {
query: '(author:"% Doe") AND (format:"pdf")',
limit: [0, 100],
sort_on: [['last_modified', 'descending'], ['creation_date', 'descending']],
select_list: ['title'],
wildcard_character: '%'
};
// run query
jio_instance.allDocs(options, function (error, response) {
// do sth
});
如果您有任何问题,请告诉我。对于未连接到网络的用户身份验证,我将建议以下路径: 在第2点中,您通过互联网接入下载身份数据。所以很明显,您必须在本地存储中以加密格式保存用户名和密码对。这是唯一可以帮助您在远程区域(即脱机模式)访问应用程序时对同一设备上的同一用户进行身份验证的方法。最终,手持设备是每个用户的,您的应用程序将只保留该用户的历史记录;在这种情况下,我认为这是绝对好的
避免碰撞;我建议增加设备与主服务器同步的次数。如果用户在网络中,并且他们对数据进行了一些修改,那么后台同步操作应该将这些更改同步到主服务器,其他用户应该在预定义的时间间隔后进行同步。同步数据的时间越长;冲突的可能性较小。但问题仍然是,当用户处于脱机模式时,数据发生了修改。为此,我们无能为力。您的冲突管理代码应该具有一些智能,例如哪个数据副本应该具有更高的优先级,即来自具有安全角色的X用户的数据或来自具有B安全角色的Y用户的数据或类似的内容 许多应用程序和数据库都存在并发问题。在发帖和移动技术方面,只是有一个较长的差距,但并没有那么大的不同。@JeffO你并没有真正回答我的问题。。并发和数据冲突是我发现的一个问题,这是真的,但那又如何呢?