我正在尝试使用以下json数据进行发布请求。但我需要一个字段,即“注释”作为空字符串值传递。当我这样传递时,出现错误:
“一个或多个参数值无效:AttributeValue不能包含空字符串”。
如何解决此问题?
//json data which i need to post
{
"storeId": "106",
"addressId": "1",
"managerId": "1",
"name": "Syammohan",
"contactNo": "9656985685",
"notes": "",
"bookingType": "Weddding Consult",
"bookingDate": "2019-05-02",
"bookingTime": "09:00 am"
}
function bookingDone(employee) {
var {
storeId,
addressId,
managerId,
name,
contactNo,
notes,
bookingType,
bookingStatus,
bookingTime
} = req.body
console.log("notes", notes);
const params = {
TableName: "Booking",
Item: {
id: id,
storeId: storeId,
addressId: addressId,
managerId: managerId,
name: name,
contactNo: contactNo,
notes: notes,
bookingType: bookingType,
bookingStatus: bookingStatus,
bookingDate: bookingDate,
bookingTime: bookingTime,
employeeId: employee.id
},
};
docClient.put(params, (error) => {
if (error) {
console.log(error);
res.status(400).json({ error: 'Could not create booking' });
}
// queue.push(JSON.stringify({ event: 'booking.booking.created', model: { 'Bookings': params.Item } }));
res.send(params.Item)
// res.json({ id, name, info });
});
}
答案 0 :(得分:3)
现在支持非键字符串/二进制属性中的空值-AWS announcement
答案 1 :(得分:2)
Amazon DynamoDB现在支持DynamoDB表中非键String和Binary属性的空值 https://stackoverflow.com/a/61909830/7532347
答案 2 :(得分:0)
是的Dynamodb不能接受空字符串。因此,请编辑aws配置
var docClient =新的AWS.DynamoDB.DocumentClient({ convertEmptyValues:true });
这行得通!
答案 3 :(得分:0)
属性及其值的映射。该映射中的每个条目均包含一个属性名称和一个属性值。属性值不能为null;字符串和二进制类型属性的长度必须大于零;并且设置类型属性不能为空。包含空值的请求将被ValidationException异常拒绝。
您可以通过定义一个函数从对象中删除空字符串来解决问题
function removeEmptyStringElements(obj) {
for (var prop in obj) {
if(obj[prop] === '') {// delete elements that are empty strings
delete obj[prop];
}
}
return obj;
}
removeEmptyStringElements(req.body);
这将从您的对象中删除空属性。
如果您的对象包含嵌套对象,请使用以下函数
function removeEmptyStringElements(obj) {
for (var prop in obj) {
if (typeof obj[prop] === 'object') {// dive deeper in
removeEmptyStringElements(obj[prop]);
} else if(obj[prop] === '') {// delete elements that are empty strings
delete obj[prop];
}
}
removeEmptyStringElements(req.body)