我正在尝试使用DocumentDB Rest API创建一个新文档并为我自动生成id。
Create Document documentation表示id是正文的必需属性,但是当输入中没有提供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' }
答案 0 :(得分:0)
我刚注意到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);
}
答案 1 :(得分:0)
DocumentDb支持两种寻址模式:SelfLink(a.ka.RID)和AltLink(命名为a.k.a.)。 SelfLink是服务器生成的。 'id'属性是命名寻址的机会(例如:/ dbs / ToDoList / colls / items / docs / user1)。
SDK只是尝试在不可用的情况下用UNIQ值填充它们。我强烈建议指定名称。