joi不再支持二进制数据的验证,因此我们需要使用一个新的库来代替它。可以使用dynamodb-data-types库来验证二进制数据,并且可以与joi结合使用。
以下是一个示例代码,该代码使用dynamodb-data-types库验证二进制数据:
const AWS = require('aws-sdk');
const DynamoDB = new AWS.DynamoDB();
const { BinarySet, Binary } = require('dynamodb-data-types');
const params = {
TableName: 'my-table',
Item: {
binaryField: Binary.fromBuffer(new Buffer('binary-data')),
binarySetField: BinarySet.fromArray([new Buffer('binary-data1'), new Buffer('binary-data2')]),
}
};
// validate the item
const Joi = require('joi');
const schema = Joi.object({
binaryField: Joi.binary().custom(Binary.isBinary).required(),
binarySetField: Joi.array().items(Joi.binary().custom(Binary.isBinary)).required(),
});
const validation = schema.validate(params.Item);
if (validation.error) {
throw new Error('Invalid item: ' + validation.error.toString());
}
// write the item to DynamoDB
DynamoDB.putItem(params, (err, data) => {
if (err) {
console.error(err);
} else {
console.log('Item written to DynamoDB:', data);
}
});
在以上的代码中,我们首先使用dynamodb-data-types来创建Binary和BinarySet类型的数据,然后我们使用joi对这些数据进行验证。最后,我们将参数和验证结果传递给DynamoDB的putItem方法。