Javascript 如何在预触发中获取Document.SelfLink?

Javascript 如何在预触发中获取Document.SelfLink?,javascript,c#,azure-cosmosdb,Javascript,C#,Azure Cosmosdb,新查询!:) 我在我的集合中定义了以下预触发器,其中我获取主文档ID并将其放在同一文档的内部文档中。现在我如何获得主文档的自链接。这就是我迄今为止所做的尝试,但没有成功 function updateMetadata() { var context = getContext(); var request = context.getRequest(); var item = request.getBody(); var typeName = item["typename"]; item

新查询!:)

我在我的集合中定义了以下预触发器,其中我获取主文档ID并将其放在同一文档的内部文档中。现在我如何获得主文档的自链接。这就是我迄今为止所做的尝试,但没有成功

function updateMetadata() {
 var context = getContext();
 var request = context.getRequest();
 var item = request.getBody();
 var typeName = item["typename"]; 
 item[typeName].mainDocId = item.id;  // works fine
 //item[typeName].objSelfLink = item._self; //does not work
 //item[typeName].objSelfLink = item.self; //does not work
 //item[typeName].objSelfLink = item.selflink; //does not work
 //item[typeName].objSelfLink = item.Self; //does not work
 //item[typeName].objSelfLink = item.selfLink; //does not work
 request.setBody(item);
}
Id设置得很好。这是因为我在预触发中执行此操作,而自链接在预触发中不存在/不可访问吗?? 以下确实说明:

The request object can be used to manipulate the request message associated with the operation. 
Here, the pre-trigger is being run with the creation of a document, 
and the request message body contains the document to be created in JSON format.

但是,如果没有生成SelfLink,那么我会假设Id也不会在Pre-trigger中生成。有人能给我指一下相关的文档吗?

你说得对_由于记录尚未写入,因此self尚不可用。ID是在所有SDK的客户端生成的


如果你想要访问自链接,那么考虑一个后触发器,也就是说,在记录被写入之后。 你说得对_由于记录尚未写入,因此self尚不可用。ID是在所有SDK的客户端生成的


如果你想要访问自链接,那么考虑一个后触发器,也就是说,在记录被写入之后。 我怀疑你是对的。它不在预触发器中<代码>\u self正确。

.id
可能存在的原因是它可能是在客户端生成的。我没有使用.NET,但我怀疑有一些选项可以生成id的客户端。我不清楚你想完成什么?如果你解释为什么你想用一个额外的引用来注释这个项目,我可能会提出一些建议。根据上面的@LarryMaccherone,你想要实现的用例是什么?插入/替换操作的结果将具有包含_self和其他系统元数据的对象。从提供的代码“updateMetadata”中,您是否正在尝试更新系统属性?这是不受支持的。它们是只读的。我想你是对的。它不在预触发器中<代码>\u self正确。
.id
可能存在的原因是它可能是在客户端生成的。我没有使用.NET,但我怀疑有一些选项可以生成id的客户端。我不清楚你想完成什么?如果你解释为什么你想用一个额外的引用来注释这个项目,我可能会提出一些建议。根据上面的@LarryMaccherone,你想要实现的用例是什么?插入/替换操作的结果将具有包含_self和其他系统元数据的对象。从提供的代码“updateMetadata”中,您是否正在尝试更新系统属性?这是不受支持的。它们是只读的。谢谢你提供的信息。不幸的是,它实际上对我没有帮助,因为在创建新文档时,我需要保留SelfLink,比如Id,而不需要重复保存(在post触发器中)相同的记录。另外,因为我假设,如果我在后触发器中再次保存同一个文档,与在前触发器中执行简单的request.setBody(item)操作不同,它会产生$cost。上面发布的触发器示例不包括任何检查重复项的代码。您介意发布用于检查此场景重复项的逻辑吗?换句话说,您在哪些集合属性上实施唯一约束?
id
属性的唯一性已被强制,因为它被视为文档的主键。。系统保证
\u self
是唯一的。感谢您提供的信息。不幸的是,它实际上对我没有帮助,因为在创建新文档时,我需要保留SelfLink,比如Id,而不需要重复保存(在post触发器中)相同的记录。另外,因为我假设,如果我在后触发器中再次保存同一个文档,与在前触发器中执行简单的request.setBody(item)操作不同,它会产生$cost。上面发布的触发器示例不包括任何检查重复项的代码。您介意发布用于检查此场景重复项的逻辑吗?换句话说,您在哪些集合属性上实施唯一约束?
id
属性的唯一性已被强制,因为它被视为文档的主键。。系统保证
\u self
是唯一的。