1.删除数据操作:
对于数据,不做逻辑删除,仅作标记删除,即将数据的isDelete属性置为true,因此删除数据实际上是修改数据。
某个item如图
const item = await container.item(id, partitionKey).read() // 根据id和partitionKey读取数据
let Item = item.resource //获取数据所有属性
Item.isDelete = "true" // 将isDelete字段设置为true,标记删除
const { resource: replacedItem } = await container.item(id).replace(Item) //更新原数据
2.批量操作
- V3版本及更新的SDK:
使用Container.items.bulk()方法进行批量操作
const { resources: items } = await container.items.query(querySpec).fetchAll(); // 根据条件查询所有符合的数据
const operations = items.map(item => {return {operationType: 'Replace',partitionKey: item.partitionKey,resourceBody: {id: item.id,...item, // 保持原有属性不变或添加或修改你想要的属性isDelete: "true" //标记删除}};
});// 执行批量操作
const { result } = await container.items.bulk(operations)
- V3之前较旧版本的SDK:
旧版本中不存在Container.items.bulk()方法,获取到所有items后,需要对这些items分别进行修改。可以使用循环,但如果数据量较大,循环耗时太多,所以选择使用promise.all()方法并发操作。
const { resources: items } = await container.items.query(querySpec).fetchAll(); // 根据条件查询所有符合的数据
const promises = items.map(async (item) => {item.isDelte = "true"; // 标记删除return container.item(item.id).replace(item);
});
// 使用Promise.all并发执行所有的替换操作
await Promise.all(promises);