【发布时间】:2022-06-15 12:17:01
【问题描述】:
我的 Azure Cosmos DB 中有一个成本指南容器(使用核心 SQL API)。每个成本指南都有一系列材料。我需要在容器中的每个文档中为这个数组添加一个材质。这可能在单个事务中使用 javascript 吗?我熟悉使用补丁操作单独更新部分文档,但如果可能的话,我更愿意一次完成所有操作。我正在使用@azure/cosmos 3.15 版包
这是我在函数应用中更新单个文档的方式:
const CosmosClient = require('@azure/cosmos').CosmosClient;
const config = require('../config/config');
const { endpoint, key, databaseId } = config;
const client = new CosmosClient({ endpoint, key });
const database = client.database(databaseId);
module.exports = async function (context, req) {
const containerId = req.query.containerId;
const container = database.container(containerId);
const id = req.query.id;
const updates = req.body;
const querySpec = {
query: `SELECT * from c where c.id = "${id}"`
}
const { resources: items } = await container.items
.query(querySpec)
.fetchAll()
const patchOp = [];
// loop through updates object
Object.keys(updates).map(key => {
patchOp.push({
op: 'replace',
path: `/${key}`,
value: updates[key]
})
})
const { resource: patchSource } = await container.item(items[0].id, items[0].id).patch(patchOp);
}
【问题讨论】:
标签: javascript azure azure-cosmosdb patch