在我的Angular / Ionic应用程序中,我想将HttpRequest对象保存到本地存储(使用Ionic的本机存储),该存储在某些特定条件下从http拦截器调用:
public addRequestToQueue(request) {
let queuedRequests = [];
this.storage.get('queuedRequests').then((requests) => {
if(requests) {
queuedRequests = requests;
}
queuedRequests.push(request);
this.storage.set('queuedRequests', queuedRequests);
});
}
但是我在控制台中遇到错误:
Uncaught (in promise): DataCloneError: Failed to execute 'put' on 'IDBObjectStore': function () {
_this.headers = new Map();
Object.keys(headers).forEach(function ...<omitted>... } could not be cloned.
Error: Failed to execute 'put' on 'IDBObjectStore': function () {
_this.headers = new Map();
Object.keys(headers).forEach(function ...<omitted>... } could not be cloned.
如何将它们保存在本地存储中以备后用?可能吗?也许应该使用某种序列化方法?
答案 0 :(得分:-1)
更新
在研究了有关此错误的内容后,我发现通常存在一个向Array原型添加属性的框架或工具,这使其无法复制keys
。您可以在pouchdb上引用以下github discussion,其中用户存在类似的错误。
只需确认没有其他干扰您的存储,请尝试对请求进行编码并将其放入:
public addRequestToQueue(request) {
this.storage.set('request', JSON.stringify(request));
});
此