【发布时间】:2014-09-10 19:53:09
【问题描述】:
我正在使用 Worklight 6.2 构建一个使用 JSONStore 和 SQL 适配器的简单数据同步示例。 一切似乎都按我想要的方式工作,除了“推”回适配器。我的应用程序通过“load()”提取数据。我允许用户选择一个项目,更改它,然后在集合中“替换()”。但是,当我调用“push()”时,什么也没有发生。没有错误-nada。我希望这是一个简单的“拼写错误”问题,但我现在被难住了。
任何意见将不胜感激!
-鲍勃-
有效的方法:
WL.JSONStore.init(),
WL.JSONStore.load(),
WL.JSONStore.findAll(),
WL.JSONStore.find(),
WL.JSONStore.replace(),
WL.JSONStore.pushRequiredCount()
不工作的是最后也是最重要的:
WL.JSONStore.push();
这是我的同步代码:
function syncWithServer(){
// THIS FIRST PART WORKS - YAY!!!!!
console.log ("Check for dirty records");
WL.JSONStore.get(employeeCollectionName).pushRequiredCount()
.then(function (numberOfDirtyDocuments) {
alert("DIRTY: " + numberOfDirtyDocuments);
})
.fail(function (errorObject) {
alert (errorObject);
});
/ NOTHING HAPPENS AFTER THE LOG - JUST FALLS THRU TO THE LAST CONSOLE LOG
// NO ERRORS OR ANYTHING
console.log("Atempting to update server");
WL.JSONStore.get(employeeCollectionName).push()
.then ( function (res) {
alert("Server updated successfully");
})
.fail ( function (errorObject){
alert (errorObject);
});
console.log("HUmmmmmm .....");
}
【问题讨论】:
-
执行 pushRequiredCount 时是否得到 0 个脏文档?推送回调中的 res 变量是空的,还是数组已满?您能否将 WL.JSONStore.init 包含在您配置要用于推送的适配器的选项对象中?您要推送到的适配器中的代码是什么?所有这些都将有助于调试您的代码。您是在 Android、iOS、Windows 中测试此代码,还是在预览时仅在浏览器中测试?您可以在日志中看到与适配器的连接吗?您可以从您正在测试的设备访问服务器的控制台吗?
-
@Daniel - 为长时间的延迟道歉。不幸的是,我上周不得不出差,不得不搁置这个。在我发送代码之前,我认为我需要只用最少的元素来重建我的项目——尽量减少出错的可能性。同时,我注意到 WL 6.1 和 WL 6.2 示例不使用 jQuery Mobile。我想知道是否有人对兼容性问题有任何想法。我正在使用 JQM 1.4.0。
-
JQM 应该没有问题,但如果你把它拿出来,它可能会使调试更容易。尝试获取我要求的信息,以便我们可以缩小问题的范围。
-
@Daniel - 我得到了 1 个如预期的脏文档,我从来没有收到回调,我正在使用 FireFox 和 Chrome 在 MAC 上进行测试,适配器现在被拔掉了,我看到了 getEmployees,但不是 updateEmployee。我已将文件添加(我希望)到 github(新手)帐户以供您查看 - 请善待! :-) github.com/btierney/SampleJSONStore
-
抱歉,回复延迟,请看下面我的回答,它应该适合你。
标签: ibm-mobilefirst adapter sync jsonstore