我编写了Json商店,用于获取添加替换数据库中的删除值。 我已经初始化了集合。就像这个
function wlCommonInit(){
var collections = {
Users : {
searchFields: { Username: 'integer', Password: 'string'}
},
adapter:{
name:'SQL',
add:'addSQL',
remove:'deleteSQL',
replace:'updateSQL',
load:{
procedure:'getSQLs',
params:[],
}
}
};
WL.JSONStore.init(collections).then(function () {
alert("Collection is declared");
});}
$("#get").bind("click",function(){
WL.JSONStore.get("Users").load().then(function(res1){
alert(JSON.stringify(res1));
});
});
适配器:
var selectStatement = WL.Server.createSQLStatement("select username, password from test");
function getSQLs(){
return WL.Server.invokeSQLStatement({
preparedStatement : selectStatement,
parameters : []
});}
在运行此操作时遇到如下错误:
[wl.jsonstore] {"src":"load","err":18,"msg":"FAILED_TO_LOAD_INITIAL_DATA_FROM_ADAPTER_INVALID_LOAD_OBJ","col":"Users","usr":"jsonstore","doc":{},"res":{}}
您能告诉我如何从数据库返回值以及如何解决此错误。
此致
Sheikh Mohammed Shamnoon
答案 0 :(得分:1)
您错过了使加载对象无效的加载密钥,就像错误消息所示( FAILED_TO_LOAD_INITIAL_DATA_FROM_ADAPTER_ INVALID_LOAD_OBJ )。
你有:
load:{ procedure:'getSQLs', params:[], }
你应该:
load:{ procedure:'getSQLs', params:[], key: yourLoadKey }
这取决于你的getSQLs过程调用返回的内容,这个键如何适应适配器响应:responseFromAdapter.invocationResult[key]
。
但是,由于您使用的是v6.2,我建议您避免使用load
和push
JSONStore API,并按照文档here处理外部数据。
基于上述文档链接的一些示例代码:
WL.JSONStore.init(collections)
.then(function () {
alert('init done');
return WL.Client.invokeProcedure({
adapter : 'SQL',
procedure : 'getSQLs',
parameters : []
});
})
.then(function (responseFromAdapter) {
alert('responseFromAdapter:' + JSON.stringify(responseFromAdapter));
//Look at the responseFromAdapter and call something like
//WL.JSONStore.get('Users').add(...)
});