gpt4 book ai didi

javascript - 如何删除 DOJO 数据存储添加到我的已提取项目中的所有额外字段?

转载 作者:行者123 更新时间:2023-11-30 05:57:58 32 4
gpt4 key购买 nike

当从 DOJO 数据存储中获取一个项目时,DOJO 会向它添加大量额外的字段。它还改变了数据的结构方式。

我知道我可以手动将所有项目重建为其初始形式(这将需要我在每次更改 REST 对象时都对两个 JS 代码进行更新),但肯定有更好的方法。

也许是 store.detach( item ) 或类似的东西?

最佳答案

dojo.data API 正在逐步淘汰,部分原因是额外的字段。您可以考虑使用新的 dojo.store API。商店 api 不会添加额外的字段。

我已经编写了一个函数来执行您想要执行的操作。它跟随。需要注意的一件事是,我的函数将子对象转换为 { _reference: 'id' } 表示法。您可能需要不同的行为。

Util._detachItem = function(item) {
var fnIncludeProperty = function(key) {
return key !== '_0'
&& key !== '_RI'
&& key !== '_RRM'
&& key !== '_S'
&& key !== '__type'
};

var store = item._S;

var fnCreateItemReference = function(itm) {
if (store.isItem(itm)) {
return { _reference: itm.id[0] };
}
return itm;
};

var fnProcessItem = function(itm) {
var newItm = {};
for(var k in itm) {
if(fnIncludeProperty(k)) {
if (dojo.isArray(itm[k])) {
// TODO this could be a problem with arrays with a single item
if (itm[k].length == 1) {
newItm[k] = fnCreateItemReference(itm[k][0]);
} else {
var valArr = [];
dojo.forEach(itm[k], function(arrItm) {
valArr.push(fnCreateItemReference(arrItm));
});
newItm[k] = valArr;
}
} else {
newItm[k] = fnCreateItemReference(itm[k]);
}
}
}
return newItm;
};

return fnProcessItem(item);
};

注意:这个函数是我原来写的修改的,我没有测试上面的代码。

关于javascript - 如何删除 DOJO 数据存储添加到我的已提取项目中的所有额外字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10652173/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com