gpt4 book ai didi

json - AWS-SDK S3 deleteObjects 返回格式错误的XML?

转载 作者:太空宇宙 更新时间:2023-11-04 01:01:52 24 4
gpt4 key购买 nike

使用适用于 Node.js 的 aws-sdk (2.0.18),我尝试使用 deleteObjects 方法删除多个对象。

delete: function (objects, callback) {
var s3delete = new AWS.S3();
var params = {
Bucket: config.s3.bucket,
Delete: {
Objects: objects
}
};
s3delete.deleteObjects(params, function (err, deleted) {
if (err) {
console.log(err, err.stack);
return callback(err);
}
return callback(null, deleted);
});
}

我的 params 对象如下所示:

{ Bucket: 'bucketname',
Delete: {
Objects:[
{"Key":"folder/file.extension"},
{"Key":"folder/file.extension"},
{"Key":"folder/file.extension"},
{"Key":"folder/file.extension"},
{"Key":"folder/file.extension"},
{"Key":"folder/file.extension"},
{"Key":"folder/file.extension"}
]
}
}

这将返回以下错误:

{
message: "The XML you provided was not well-formed or did not validate against our published schema",
code: "MalformedXML",
time: "2014-10-11T10:35:52.525Z",
statusCode: 400,
retryable: false
}

根据API spec ,这应该有效。仅供引用:我从 Mongoose 模型传入 objects 参数,它在 Mongoose 中存储为 Mixed。

最佳答案

这是由 Mongoose 在原始 objects 数组中返回格式错误的 JSON 对象引起的。

为了专门解决这个问题,我必须创建一个新对象并将它们推送到一个新数组,在这种特定情况下:

var s3Objects = [];

objects.forEach(function(ele, index, arr) {
console.log(index + ': ' + ele.Key);
var thisKey = {
Key: ele.Key
};
s3Objects.push(thisKey);
});

然后将s3Objects传入参数:

var params = {
Bucket: config.s3.bucket,
Delete: {
Objects: properObjects
}
};

现在可以使用了。

关于json - AWS-SDK S3 deleteObjects 返回格式错误的XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26313803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com