我可以使用基于ID的链接使用Azure DocumentDb中的服务器端Javascript读取文档吗?

时间:2017-04-17 14:41:36

标签: azure azure-cosmosdb

我正在用JavaScript编写服务器端存储过程,以将文档批量插入到documentDb集合中。我还想在插入主文档后更新元数据文档。我已经知道我的元数据文档的ID。 根据我的研究,我明白不是使用:

collection.queryDocuments(collectionLink, 'SELECT * FROM root r WHERE r.id = "' + metadataDocId + '"', callback)

我应该使用:

collection.readDocument(documentLink, options, callback)

我的问题是,我可以使用ID-based document link(因为我知道所有的ID)或者我是否仅限于使用自我链接?官方文档没有指定任何内容。

我的问题的原因是C#客户端API过去只支持自我链接,但现在它也支持基于ID的链接。这种支持是否也扩展到了javascript API?

2 个答案:

答案 0 :(得分:1)

尽管文档中缺乏明确性,但

ID-based links应该可以正常工作。

答案 1 :(得分:0)

是的,可以。在JavaScript API中,Collection.getAltLink()便于获取集合的基于ID的链接。您可以使用Azure DocumentDB bids fond farewell to Self-Links中所述的格式将文档ID附加到文档ID后面。在下面的示例中,__getContext().getCollection()的别名。

var link = __.getAltLink() + "/docs/" + id;

现在,您可以使用link进行带有文档链接参数的操作:

  • readDocument()
  • replaceDocument()
  • deleteDocument()
  • createAttachment()
  • queryAttachments()
  • readAttachments()
  • upsertAttachment()

readDocument的示例:

__.readDocument(link, {}, function (err, resource, options) {
        // callback code ...
    });