Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么指定的键不存在时S3.deleteObject不会失败';不存在?_Javascript_Node.js_Rest_Aws Sdk - Fatal编程技术网

Javascript 为什么指定的键不存在时S3.deleteObject不会失败';不存在?

Javascript 为什么指定的键不存在时S3.deleteObject不会失败';不存在?,javascript,node.js,rest,aws-sdk,Javascript,Node.js,Rest,Aws Sdk,使用,为什么在尝试删除不存在的对象(即S3键错误)时不会出现错误 另一方面,如果我指定一个不存在的bucket,则会产生一个错误 如果您考虑下面的节点程序,密钥< /C>参数列出一个不存在于桶中的密钥,而对回调的错误参数是“代码> null : var aws = require('aws-sdk') function getSetting(name) { var value = process.env[name] if (value == null) { throw new

使用,为什么在尝试删除不存在的对象(即S3键错误)时不会出现错误

另一方面,如果我指定一个不存在的bucket,则会产生一个错误

如果您考虑下面的节点程序,密钥< /C>参数列出一个不存在于桶中的密钥,而对回调的<代码>错误<代码>参数是“代码> null :

var aws = require('aws-sdk')

function getSetting(name) {
  var value = process.env[name]
  if (value == null) {
    throw new Error('You must set the environment variable ' + name)
  }
  return value
}

var s3Client = new aws.S3({
  accessKeyId: getSetting('AWSACCESSKEYID'),
  secretAccessKey: getSetting('AWSSECRETACCESSKEY'),
  region: getSetting('AWSREGION'),
  params: {
    Bucket: getSetting('S3BUCKET'),
  },
})
picturePath = 'nothing/here'
s3Client.deleteObject({
  Key: picturePath,
}, function (err, data) {
  console.log('Delete object callback:', err)
})
因为这是政府应该说的

deleteObject(参数={},回调)⇒ AWS.请求

删除对象的空版本(如果有)并插入 删除标记,它将成为对象的最新版本。如果 没有空版本,AmazonS3不会删除任何对象


因此,如果对象不存在,调用
deleteObject
时仍然不是错误,并且如果启用了版本控制,它会添加一个删除标记,即使之前没有要删除的内容。

因为规范规定它应该这样做->“删除空版本(如果有),并插入一个删除标记,该标记将成为该对象的最新版本。如果没有空版本,Amazon S3不会删除任何对象。“,如果该对象不存在,则调用
deleteObject
@adeneo时仍然不是错误。请将此作为答案写下来?更正-如果该对象不存在,未添加删除标记。@JoelL这是不正确的。如果对象不存在,则仍会添加删除标记。@AubtinSamai这仅适用于启用版本控制的存储桶,对吗?@yerzhang这是正确的。删除标记仅在启用版本控制时使用,否则在未启用版本控制时只会删除对象。作为旁注,这种行为称为幂等:您可以将其视为“此请求应删除此对象”,而不是“此请求应确保此对象不存在(不再存在)”。如果该对象不存在,则该合同仍然受到尊重。