首页 文章

DocumentDB Rest API - 为新文档创建文档需求ID

提问于
浏览
0

我正在尝试使用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' }

2 回答

  • 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);
    }
    
  • 0

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

    SDK只是尝试在不可用的情况下用UNIQ值填充它们 . 我强烈建议指定名称 .

相关问题