Ibm mobilefirst WL.JSONStore.push不执行任何操作

Ibm mobilefirst WL.JSONStore.push不执行任何操作,ibm-mobilefirst,adapter,sync,jsonstore,Ibm Mobilefirst,Adapter,Sync,Jsonstore,我正在使用Worklight 6.2构建一个使用JSONStore和SQL适配器的数据同步的简单示例。 除了“推”回适配器之外,一切似乎都按照我想要的方式工作。我的应用程序通过“load()”提取数据。我允许用户选择一个项目,对其进行更改,然后在集合中“replace()”。然而,当我调用“push()”时,什么也没有发生。没有错误-娜达。我希望这是一个简单的“打字错误”问题,但我在这一点上被难住了 任何意见都将不胜感激 -鲍勃- 正在工作的事情: WL.JSONStore.init(), WL

我正在使用Worklight 6.2构建一个使用JSONStore和SQL适配器的数据同步的简单示例。 除了“推”回适配器之外,一切似乎都按照我想要的方式工作。我的应用程序通过“load()”提取数据。我允许用户选择一个项目,对其进行更改,然后在集合中“replace()”。然而,当我调用“push()”时,什么也没有发生。没有错误-娜达。我希望这是一个简单的“打字错误”问题,但我在这一点上被难住了

任何意见都将不胜感激

-鲍勃-

正在工作的事情:

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 .....");
}

您的应用程序似乎做了正确的事情,因此这可能是一个缺陷。但是,从6.2开始,push()和load()API就被弃用了,我认为如果您采用新方法,它将适合您

新方法是直接调用适配器;这就是JSONStore在调用push()或load()时所做的一切,同时将您限制为可以发送给它的参数,因此直接调用适配器更有意义。对于推送,您可以按如下方式编辑推送呼叫:

WL.JSONStore.get(employeeCollectionName).getAllDirty()

.then(function (dirtyDocs) {

  return WL.Client.invokeProcedure({
    adapter : 'people',
    procedure : 'updatePeople',
    parameters : [ dirtyDocs ]
  });
})

.then(function (responseFromAdapter) {
  // ... call markClean API after a valid response form the adapter
});
确保将参数、过程和适配器名称更改为适配器的名称

此外,这个答案是对文档内容的一个非常简短的总结,包括关于如何进行推拉(加载)的示例


也就是说,尽管push()和load()已被弃用,但它们仍然可以工作,因此创建了一个缺陷来进一步研究这一问题。

我从您的GitHub帐户运行了您的测试应用程序,并且使用HTTP适配器和正确返回的回调可以很好地运行它。使用SQL适配器时收到哪些日志(如果有)


[编辑~8/6]我创建了一个SQL适配器,可以从适配器中推拉

当您进行pushRequiredCount时,是否得到0个脏文档?推送回调中的res变量是空的,还是数组已满?能否将WL.JSONStore.init包含在options对象中,在该对象中配置要用于推送的适配器?您要推送到的适配器中的代码是什么?所有这些都有助于调试代码。您是在Android、iOS、Windows中测试此代码,还是在预览时仅在浏览器中测试?您能在日志中看到适配器的连接吗?你能从你正在测试的设备上访问服务器控制台吗?@Daniel-对长时间的延迟表示歉意。不幸的是,我上周不得不旅行一整周,不得不把这个搁置起来。在我发送代码之前,我想我需要用最少的元素重建我的项目——尽量减少出错的可能性。同时,我注意到WL6.1和WL6.2示例不使用jQuery Mobile。我想知道是否有人对兼容性问题有任何想法。我正在使用JQM 1.4.0。JQM应该不是问题,但如果您将其去掉,可能会使调试更容易。试着获取我要求的信息,这样我们可以缩小问题的范围。@Daniel-我得到了一个脏文件,正如预期的那样,我从来没有得到回调,我正在使用FireFox和Chrome在MAC上进行测试,适配器现在断开了,我看到了getEmployees,但没有看到UpdateEmployees。我已经(我希望)将这些文件添加到github(新手)帐户中,供您审阅-友好一点吧:-)很抱歉延迟了回复,请看我下面的答案,这将使它适合您。