【问题标题】:How to delete a forge bucket from Autodesk forge如何从 Autodesk forge 中删除 Forge 存储桶
【发布时间】:2026-01-22 16:30:01
【问题描述】:

我正在使用示例成功创建 Bucket 和 uploadFile。

https://github.com/Autodesk-Forge/forge-extensions

我添加了删除功能 但是当我删除存储桶时出现错误。

----oss.js---

router.post('/buckets', async (req, res, next) => {
    let payload = new PostBucketsPayload();
    payload.bucketKey = config.credentials.client_id.toLowerCase() + '-' + req.body.bucketKey;
    payload.policyKey = 'transient'; // expires in 24h


    try {
        // Create a bucket using [BucketsApi](https://github.com/Autodesk-Forge/forge-api-nodejs-client/blob/master/docs/BucketsApi.md#createBucket).
        //Bucket createBucket(postBuckets, opts, oauth2client, credentials)
        await new BucketsApi().createBucket(payload, {}, req.oauth_client, req.oauth_token);
        res.status(200).end();
    } catch(err) {
        next(err);
    }
});


router.delete('/buckets/delete', async (req, res, next) => {

    const encoded_bucketKey = encodeURI(req.bucketKeyID);

     
    try {
        // Delete a bucket using 
        await new BucketsApi().deleteBucket(encoded_bucketKey,  req.oauth_client, req.oauth_token);
        res.status(200).end();
    } catch(err) {
        next(err);
    }
});

-----------ForgeTree.js -------

function createNewBucket() {
  var bucketKey = $('#newBucketKey').val();
  var policyKey = $('#newBucketPolicyKey').val();
 

  jQuery.post({

    url: '/api/forge/oss/buckets',
    contentType: 'application/json',
    data: JSON.stringify({ 'bucketKey': bucketKey, 'policyKey': policyKey }),
    success: function (res) {
      $('#appBuckets').jstree(true).refresh();
      $('#createBucketModal').modal('toggle');
    },
    error: function (err) {
      if (err.status == 409)
        alert('Bucket already exists - 409: Duplicated')
      console.log(err);
    }
  });
}

function deleteBucket() {

  var node = $('#appBuckets').jstree(true).get_selected(true)[0];

  switch (node.type) {
    case 'bucket':
      
        jQuery.ajax({

          url: '/api/forge/oss/buckets/delete',
          type:'delete',
          contentType: 'application/json',
          data: JSON.stringify({ 'bucketKey': node.text , 'bucketKeyID' : node.id}),
          success: function (res) {
            $('#appBuckets').jstree(true).refresh();

          },
          error: function (err) {
            
             alert('Bucket delete error:')
            console.log(err);
          }
        });
    break;

  
  }

  console.log("Delete Bucket=%j", node)

}

【问题讨论】:

    标签: javascript autodesk-forge autodesk-viewer autodesk-model-derivative


    【解决方案1】:

    我检查了示例中的 config.js,默认情况下获取令牌时不包括 bucket:delete 范围。您是否在代码中添加了范围?

    也在删除路线内,

    const encoded_bucketKey = encodeURI(req.bucketKeyID);
    

    应该是

    const encoded_bucketKey = encodeURI(req.body.bucketKeyID); 
    

    否则,您将有 undefined as encoded_bucketKey。

    【讨论】:

    • 谢谢。我更改了源代码。但我得到同样的错误。 ---config.js------ 内部:['bucket:create', 'bucket:read', 'bucket:delete', 'data:read', 'data:create', 'data:write' ],
    • 我又检查了一遍。常量编码_bucketKey = encodeURI(req.bucketKeyID);应该是 const encoded_bucketKey = encodeURI(req.body.bucketKeyID);
    • 在您的帮助下我成功了。非常感谢