如何在Pre触发器中获取Document.SelfLink?

时间:2015-08-27 06:55:49

标签: javascript c# azure-cosmosdb

新查询! :)

我在我的集​​合中定义了以下 Pre trigger ,在那里我获得了主Document ID并将其放在同一Document中的内部Document中。现在我如何获得主文档的SelfLink。这是我到目前为止尝试过的,没有成功?

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得到的设置很好。这是因为我在 Pre触发器中执行此操作,并且 Pre触发器中不存在/可访问SelfLink? 以下documentation确实说明了:

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,我会假设也不会在 Pre trigger 中生成Id。有人可以指点我的任何相关文件吗?

1 个答案:

答案 0 :(得分:0)

你是对的。 _self尚未提供,因为该记录尚未写入。 ID是在所有SDK中的客户端生成的。

如果要访问_self链接,请考虑后触发,即在写入记录之后。