gpt4 book ai didi

javascript - 无法从 Azure 触发功能更新 cosmosDB 集合

转载 作者:行者123 更新时间:2023-12-03 00:06:32 26 4
gpt4 key购买 nike

我在 cosmosDB 中使用唯一键创建了一个集合。理想情况下,如果输入现有键作为集合的输入,则应使用新值更新集合。我有一个 Azure cosmosDB 触发器函数,它将上述集合配置为输出。

下面是我正在执行逻辑的index.js 文件。

module.exports = async function (context, documents) {

var StatusInput = context.bindings.StatusInput; //additional input

if (!!documents && documents.length > 0) {
var finalOutput = [];

// logic implementation
for(var i = 0; i < documents.length; i++){
var document = documents[i];
var baseID = document.id;
baseTempJson = {};
var abcValue = null;
var xyzValue = null;

const checkForID = obj => obj.id === baseID;

if(!(StatusInput.some(checkForID))){

if(!!document.abc && document.abc !=null) {
abcValue = document.abc;
} if(!!document.xyz && document.xyz != null) {
xyzValue = document.xyz;
}
baseTempJson = {"id": baseID, "abc": abcValue, "xyz": xyzValue};
finalOutput.push(baseTempJson);

} else
{
StatusInput.forEach(function(element){
var innerID = element.id;
var tempJson = {};
var abcValue = null;
var xyzValue = null;

if(innerID == baseID){
context.log('Data for the ID ' + innerID + ' is existing. Updating the values.');

if(!!document.abc && document.abc !=null) {
abcValue = document.abc;
} if(!!element.abc && typeof document.abc == "undefined") {
abcValue = element.abc;
}
if(!!document.xyz && document.xyz != null) {
xyzValue = document.xyz;
}if(!!element.xyz && typeof document.xyz == "undefined") {
xyzValue = element.xyz;
}
tempJson = {"id": baseID, "abc": abcValue, "xyz": xyzValue};
finalOutput.push(tempJson);
}

});
}
}
context.bindings.StatusOutput = finalOutput;
}
context.done();
}

每当我运行触发器函数时,它都会抛出以下错误,因为唯一键的数据已经存在于集合中。


Entity with the specified id already exists in the system

如果集合中已存在唯一键,是否有任何方法可以解决此问题并更新 cosmosDB 集合。

我仅从 Azure 门户创建数据库和触发器函数。我在这里搜索了解决方案,但没有看到通过 azure 门户创建触发功能的解决方案。

最佳答案

每当您想通过 Azure 触发器功能更新 cosmosDB 中已存在的记录时,应注意以下几点。

  1. 检查数据库集合中是否存在名为 id 的元素以获取唯一键
  2. 更新插入时更新唯一键的数据的id 应该相同。

如果元素 id 不相同,则更新插入 cosmos 时将为该元素分配一个新值,并且我们将有 2 个具有不同 id 的唯一键条目s 并抛出上述错误。

关于javascript - 无法从 Azure 触发功能更新 cosmosDB 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56654550/

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