DocumentDB Rest API - 为新文档创建文档需要的编号

问题描述:

我正在尝试使用DocumentDB Rest API创建一个新文档并为我自动生成编号。DocumentDB Rest API - 为新文档创建文档需要的编号

Create Document documentation表示id是body的必需属性,但是当输入中未提供id时,node.js SDK和Azure Portal Document Explorer将同时生成ID。

下面是来自服务器的响应:

{ code: 'BadRequest', 
    message: 'Message: {"Errors":["The input content is invalid because the required properties - \'id; \' - are missing","The request payload is invalid. Ensure to provide a valid request pa 
yload."]}\r\nActivityId: 6b718b3d-01bc-403f-82e6-266254aad952, Request URI: /apps/4c8d65d7-216b-46b4-abb7-52c1a0c7123f/services/0e58e0c6-ff02-4523-a94b-204abd0d2179/partitions/6bf7ec3e-d850 
-440e-bbcb-50d949389f3e/replicas/131469737377192972p' } 

我只注意到DocumentDB node.js的SDK生成它自己的ID,这不是由数据库处理。

这里是他们用来生成唯一的ID,打包独立使用的代码:

function generateGuidId() { 
    var id = ""; 

    for (var i = 0; i < 8; i++) { 
     id += getHexaDigit(); 
    } 

    id += "-"; 

    for (var i = 0; i < 4; i++) { 
     id += getHexaDigit(); 
    } 

    id += "-"; 

    for (var i = 0; i < 4; i++) { 
     id += getHexaDigit(); 
    } 

    id += "-"; 

    for (var i = 0; i < 4; i++) { 
     id += getHexaDigit(); 
    } 

    id += "-"; 

    for (var i = 0; i < 12; i++) { 
     id += getHexaDigit(); 
    } 

    return id; 

} 

function getHexaDigit() { 
    return Math.floor(Math.random() * 16).toString(16); 
} 

DocumentDb支持两种寻址模式SelfLink(a.ka. RID)和AltLink(又名命名)。 SelfLink是由服务器生成的。 'id'属性是命名寻址的机会(例如:/ dbs/ToDoList/colls/items/docs/user1)。

SDK只是试图在UNIQ值不足的情况下填充它们。我强烈建议指定名称。