Ibm mobilefirst JSON存储在检索数据时挂起

Ibm mobilefirst JSON存储在检索数据时挂起,ibm-mobilefirst,jsonstore,Ibm Mobilefirst,Jsonstore,我们观察到,在某些时候访问JSONStore API的挂起时间很长,为了使其工作,我们必须再次调用该函数,或者应用程序必须被带到后台并再次带到前台 注意:当应用程序遇到此问题时,在我们重新安装应用程序或重新启动设备之前,行为是相同的 这似乎没有任何合适的场景,我们已经搜索了很多文章,但没有找到任何解决方案,欢迎任何解决方案 我们在像S5和S4这样的Android设备上观察到了这个问题 以下是我的代码片段: function getWidgets(w_id, getWidgetsSuccessCa

我们观察到,在某些时候访问JSONStore API的挂起时间很长,为了使其工作,我们必须再次调用该函数,或者应用程序必须被带到后台并再次带到前台

注意:当应用程序遇到此问题时,在我们重新安装应用程序或重新启动设备之前,行为是相同的

这似乎没有任何合适的场景,我们已经搜索了很多文章,但没有找到任何解决方案,欢迎任何解决方案

我们在像S5和S4这样的Android设备上观察到了这个问题

以下是我的代码片段:

function getWidgets(w_id, getWidgetsSuccessCallback, getWidgetsFailureCallback) {

var query = { user_id : w_id };
var options = {};

WL.JSONStore.get(StorageCollections.widgets).find(query, options)
.then(function(arrayResults) {
    var count = arrayResults.length;

    Logger.debug("getWidgets: success, count: " + count);

    ...

    getWidgetsSuccessCallback(widgets);
})
.fail(function(errorObject) {
    Logger.error("getWidgets: failed, error: " + JSON.stringify(errorObject));
    getWidgetsFailureCallback(errorObject);
});}
一切正常时记录

日志当访问JSON存储挂起时,只有当应用程序被带到后台并再次带回到前台时,它才会工作

JSON存储的初始化如下所示

var collections = {
// User
user: {
    searchFields: {
        user_id             : 'string',
        user_name           : 'string',
        first_name          : 'string',
        last_name           : 'string',
    }           
}
}};


// Storage encryption
var options = {};
if (key) {
    options.password = key;
    options.localKeyGen = true;
}

// Open the collection
var promise = WL.JSONStore.init(collections, options)
.then(function() {
    Logger.debug("initializeAppStorage: " + JSON.stringify(collections) + " completed");
    initAppStorageSuccessCallback(true);
    return true;
})
// Handle failure
.fail(function(errorObject) {
    Logger.error("initializeAppStorage: failed, error: " + errorObject.toString());
    initAppStorageFailureCallback(errorObject.toString());
    return false;
});
return promise;
谢谢。

试试这个:

function getWidgets(w_id, getWidgetsSuccessCallback, getWidgetsFailureCallback) {

var query = { key : w_id };
var options = {};

WL.JSONStore.get(StorageCollections.widgets).find(query, options)
.then(function(arrayResults) {
    var count = arrayResults.length;

    Logger.debug("getWidgets: success, count: " + count);

    ...

    getWidgetsSuccessCallback(widgets);
})
.fail(function(errorObject) {
    Logger.error("getWidgets: failed, error: " + JSON.stringify(errorObject));
    getWidgetsFailureCallback(errorObject);
});}

您是如何初始化此存储的?是的,我已编辑了我的评论;我们正在进行如上所述的初始化。什么是StorageCollections.widgets?同时发布成功和失败函数的代码。i、 e.GetWidgetSuccessCallback当存储增加时,是否会在检索到太多数据或与性能相关的事情时发生这种情况?我看到您已更改了查询变量。我编辑了上面的帖子以反映同样的情况,这是我的一个输入错误。