在使用DataStore更新操作时,可能会遇到Datastore检测到缺少字段的错误,即使该字段已经存在。这种情况常常发生在使用嵌套型的数据模型时。为了解决这个问题,需要手动将要更新的对象与已有的对象进行合并。示例代码如下:
import { DataStore } from '@aws-amplify/datastore';
import { MyModel } from './models';
const objToUpdate = {
id: "123",
name: "Updated Name",
nestedModel: {
// nested fields to be updated
}
};
const existingObj = await DataStore.query(MyModel, objToUpdate.id);
const mergedObj = Object.assign({}, existingObj, objToUpdate);
await DataStore.save(MyModel.copyOf(mergedObj));
在上面的代码中,我们首先根据ID查询现有对象,然后手动将要更新的值与现有值进行合并,最后使用合并后的对象进行保存操作(即使没有任何字段被更新,也需要使用这种方法进行保存)。