我正在开发一个使用JSONStore和AngularJS的Cordova应用程序(使用MobileFirst Foundation 8.0)。
以下功能更新已存储在本地馆藏'议程'。
的文件。update : function(element){
var defer = $.Deferred();
// set query for get document stored in local collection
var query = {id: element.id};
// search for exact value
var options = {
exact: true,
limit: 1
};
var collection = WL.JSONStore.get('agenda');
// invoke search function
collection.find(query, options)//WL.JSONStore.get('agenda').find(query, options)
.then(function (results) {
// handle success - results (array of documents found)
var rowstatus = results[0].json.rowstatus || '';
// substitute current saved document with the update document
results[0].json = element;
// set value of rowstatus flag
results[0].json.rowstatus = rowstatus===''?'UPD':rowstatus;
var arrayMod = [];
arrayMod.push(results[0]);
//invoke replace procedure for update document in local collection
collection.replace(arrayMod, {markDirty: false })//WL.JSONStore.get('agenda').replace(item, {markDirty: false})
.then(function(docsRefreshed){
console.log("docsRefreshed", docsRefreshed);
defer.resolve();
})
.fail(function(refreshErr){
defer.reject(refreshErr);
});
})
.fail(function (findError) {
defer.reject(findError);
});
return defer.promise();
}
步骤如下:
按元素ID查找本地集合中的文档 - IT工作
通过替换包含在' json'中的对象来更新文档的内容。 property:id没有改变,我验证了它 - IT WORKS
替换集合中的文档 - IT FAILS
返回的错误不是失败处理程序的标准错误拦截,它是以下内容:
VM404 worklight.js:5139未捕获异常:未捕获RangeError:超出(compiled_code)的最大调用堆栈大小:57__log @ VM404 worklight.js:5139PUBLIC_API。(匿名函数)@ VM404 worklight.js:5539WL.Logger.window。 onerror @ VM404 worklight.js:5497 VM404 worklight.js:57 Uncaught RangeError:超出最大调用堆栈大小(...)它@ VM404 worklight.js:57__handleJsonObj @ VM416 jsonstore.js:1951__handleJsonObj @ VM416 jsonstore.js:1947__handleJsonObj @ VM416 jsonstore.js:1947__handleJsonObj @ VM416 jsonstore。 js:1947__handleJsonObj @ VM416 jsonstore.js:1947__handleJsonObj @ VM416 jsonstore.js:1942__handleJsonObj @ VM416 jsonstore.js:1947__handleJsonObj @ VM416 jsonstore.js:1942__handleJsonObj @ VM416 jsonstore.js:1947__handleJsonObj @ VM416 jsonstore.js:1942__handleJsonObj @ VM416 jsonstore.js :1947__handleJsonObj @ VM416 jsonstore.js:1942__handleJsonObj @ VM416 jsonstore.js:1947__handleJsonObj @ VM416 jsonstore.js:1942__handleJsonObj @ VM416 jsonstore.js:1947__handleJsonObj @ VM416 jsonstore.js:1942__handleJsonObj @ VM416 jsonstore.js:1947__handleJsonObj @ VM416 jsonstore.js: 1942__handleJsonObj @ VM416 jsonstore.js:1947__handleJsonObj @ VM416 jsonstore.js:1942__handleJsonObj ....
答案 0 :(得分:0)
来自@ encrico.visentini的评论:
我解决了这个问题。该错误是由使用的插件自动添加的属性引起的,该插件导致json对象的循环引用。删除此属性我可以替换所有' json'对象