我有两个模型,一个带有更改,我正在循环并针对给定ID对同一模型进行更改检测。
我设置a stackblitz repro来说明我想要完成的任务(目前不起作用,只是我试图实现的代码。)
这是一个范围问题吗?这是一个对象变异问题吗?
我需要将(已过滤的)更改列表转换为单个对象,并将所有新更新的属性和值发布到this api/backend。
SB的代码关键字
findDeltas = async (newModels: any[]) => {
const ids = newModels.map(m => m.id);
let updates: any[] = [];
await newModels.map = async (newModel) => {
const id = +newModel.id;
const model = await fetch('https://jsonplaceholder.typicode.com/posts?userId=1')
.then(resp => resp.json())[id]; // pretend collection index = item id
let updateObj = {};
for (const key of newModel) {
console.log('Found Key: ' + key);
// Just filter for changes in one property for this demo
if (newModel[key] !== model[key] && key === 'title') {
updateObj[key] = model[key];
console.log('Update found!: ' + updateObj[key]);
}
}
console.log('Updates found: ' + this.updates.length);
this.updates.push(updateObj);
console.log('Updates total: ' + this.updates.length);
});
console.log('Updates final: ' + this.updates.length);
}
目前,在循环之外,updateObj
对象在返回时仍未定义。
Object.defineProperty(updt, key, {
enumerable: true,
configurable: true,
writable: true,
value: proposedChange[key]
})
以及......
//changedFieldList.forEach(key => {
for (const key of changedFieldList) {
和...
//const updateObjectPerId = await Promise.all(proposedChanges.map(async (proposedChange) => {
const updateObjectPerId = await proposedChanges.map(async (proposedChange) => {