Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用nodejs sdk在cosmos db中定义正确的索引路径?_Javascript_Node.js_Azure_Indexing_Azure Cosmosdb - Fatal编程技术网

Javascript 如何使用nodejs sdk在cosmos db中定义正确的索引路径?

Javascript 如何使用nodejs sdk在cosmos db中定义正确的索引路径?,javascript,node.js,azure,indexing,azure-cosmosdb,Javascript,Node.js,Azure,Indexing,Azure Cosmosdb,我目前在为我的一个cosmosdb容器定义索引策略时遇到了一些问题。我在cosmosdb中有一个容器,用于保存与用户会话相关的数据。我正在使用NodeSDK定义容器、分区键和索引策略。下面是我如何定义会话容器的索引策略和分区键 else if(containerId.includes("sessions")) { indexingPolicy = { includedPaths: [ {"path" : &q

我目前在为我的一个cosmosdb容器定义索引策略时遇到了一些问题。我在cosmosdb中有一个容器,用于保存与用户会话相关的数据。我正在使用NodeSDK定义容器、分区键和索引策略。下面是我如何定义会话容器的索引策略和分区键

else if(containerId.includes("sessions"))
    {
        indexingPolicy = {
            includedPaths: [ {"path" : "/startTime/"} ]
        };
        partitionKey = { paths: ["/id"] };
    }
当我发出POST请求而容器不存在时,它将根据我在配置文件中定义的策略创建容器。然而,当我试图发布一个新会话时,我会根据索引策略得到各种各样的错误。以下是我到目前为止所做的尝试和所犯的错误

{“path”:“/startTime/”}-->无法接受索引路径“\/startTime\/”,在位置“11”附近失败。请确保路径是有效的路径。常见错误包括无效字符或标签周围缺少引号

{“path”:“/startTime/*”}-->“任何路径类型集中都没有提供特殊的强制索引路径\“\/\”。请在其中一个集中提供此路径。”

{“path”:“/startTime/?”}-->“任何路径类型集中都没有提供特殊的强制索引路径\“\/\”。请在其中一个集中提供此路径。”

{“path”:“/startTime”}-->“无法接受索引路径“\/startTime”,在位置“10”附近失败。请确保该路径是有效路径。常见错误包括无效字符或标签周围缺少引号。”

任何关于如何正确定义索引策略的帮助都将不胜感激

任何索引策略都必须将根路径/*作为 包含或排除的路径

指向标量值(字符串或数字)的路径以/

为了使代码正常工作,您可以尝试以下方法:

const indexingPolicy = {
    includedPaths: [ {"path" : "/*"},{"path" : "/startTime/?"} ]
}

await container.replace({
    id: containerId,
    partitionKey: { paths: ["/id"] },
    indexingPolicy: indexingPolicy
});
但据我所知,如果包含的路径中有
{“path”:“/*”}
,则无需添加
{“path”:“/startTime/?”}
。因为
/*
可以包括
“/startTime/?”

参考: